Chuyển đến nội dung chính

Pixtral 12B: Hướng dẫn kèm ví dụ thực tiễn

Tìm hiểu cách sử dụng Pixtral 12B của Mistral theo cách tương tác qua Le Chat hoặc lập trình thông qua API trên La Plateforme.
· 8 phút đọc

Khám phá cùng AI

Mistral đã phát hành Pixtral 12B, một mô hình ngôn ngữ lớn (LLM) mã nguồn mở với 12 tỷ tham số. Đây là mô hình đa phương thức đầu tiên của Mistral, nghĩa là nó có thể xử lý cả văn bản và hình ảnh.

Vì sao Pixtral là một bổ sung giá trị cho hệ sinh thái LLM:

  • Xử lý hiệu quả hình ảnh ở mọi kích thước mà không cần tiền xử lý.
  • Cửa sổ ngữ cảnh 128K cho phép xử lý prompt phức tạp và nhiều hình ảnh.
  • Hiệu năng mạnh ở cả tác vụ chỉ văn bản và đa phương thức.
  • Miễn phí cho các dự án không thương mại hóa, lý tưởng cho nhà nghiên cứu và người đam mê.
  • Mã nguồn mở theo giấy phép Apache 2.0, góp phần dân chủ hóa AI.

Trong hướng dẫn này, tôi sẽ cung cấp nhiều ví dụ và hướng dẫn từng bước về cách dùng Pixtral qua giao diện trò chuyện web Le Chat và lập trình qua API. Trước hết, hãy điểm qua những khía cạnh lý thuyết thiết yếu của Pixtral.

Pixtral 12B là gì?

Mistral AI đã ra mắt Pixtral 12B, một mô hình được thiết kế để xử lý đồng thời cả hình ảnh và văn bản. Với 12 tỷ tham số, nó có thể đảm nhiệm các tác vụ kết hợp giữa hình ảnh và ngôn ngữ, như diễn giải biểu đồ, tài liệu hoặc đồ thị.

Mô hình hữu ích trong các môi trường đòi hỏi hiểu sâu cả hai định dạng.

Một tính năng quan trọng của Pixtral 12B là khả năng xử lý nhiều hình ảnh trong một lần nhập, ở đúng độ phân giải gốc. Mô hình có cửa sổ ngữ cảnh 128.000 token, cho phép phân tích các tài liệu, hình ảnh dài và phức tạp hoặc nhiều nguồn dữ liệu đồng thời. Điều này hữu ích trong các lĩnh vực như báo cáo tài chính hoặc quét tài liệu cho doanh nghiệp.

Các benchmark của Pixtral

Pixtral thể hiện tốt ở các tác vụ Kiến thức & Lập luận đa phương thức, đặc biệt trên bài kiểm tra MathVista, nơi nó dẫn đầu. Ở các tác vụ hỏi đáp đa phương thức, nó cũng giữ vị trí mạnh, nhất là trong ChartQA.

Pixtral benchmarks

Nguồn: Mistral AI

Tuy nhiên, ở các tác vụ tuân thủ hướng dẫn và dựa trên văn bản, những mô hình khác như Claude-3 Haiku và Gemini Flash-8B cho thấy hiệu năng cạnh tranh hoặc vượt trội. Điều này gợi ý Pixtral 12B xuất sắc trong lập luận đa phương thức và trực quan, nhưng có thể không dẫn đầu ở các tác vụ thuần văn bản.

Kiến trúc của Pixtral

Kiến trúc Pixtral 12B được thiết kế để xử lý đồng thời văn bản và hình ảnh. Nó gồm hai thành phần chính: Bộ mã hóa thị giác (Vision Encoder) và Bộ giải mã Transformer đa phương thức.

Vision Encoder, với 400 triệu tham số, được huấn luyện chuyên biệt để đáp ứng hình ảnh ở nhiều kích thước và độ phân giải khác nhau.

Bộ mã hóa thị giác của Pixtral.

Nguồn: Mistral AI

Thành phần thứ hai, Bộ giải mã Transformer đa phương thức, là một mô hình lớn hơn với 12 tỷ tham số. Nó dựa trên kiến trúc Mistral Nemo hiện có và được thiết kế để dự đoán token văn bản tiếp theo trong các chuỗi đan xen dữ liệu văn bản và hình ảnh.

Bộ giải mã này có thể xử lý ngữ cảnh rất dài (lên đến 128k token), cho phép tiếp nhận số lượng lớn token hình ảnh và thông tin văn bản phong phú trong các tài liệu lớn.

Bộ giải mã transformer đa phương thức của Pixtral.

Nguồn: Mistral AI

Sự kết hợp này cho phép Pixtral xử lý nhiều kích cỡ và định dạng hình ảnh, chuyển các ảnh độ phân giải cao thành các token mạch lạc mà không mất ngữ cảnh.

Cách sử dụng Pixtral trên Le Chat

Cách dễ nhất để truy cập Pixtral miễn phí là qua Le Chat, giao diện chat của họ. Giao diện này giống với các giao diện chat LLM khác—ví dụ như ChatGPT.

Giao diện web Le Chat.

Để dùng Pixtral, truy cập bộ chọn mô hình ở phía dưới, cạnh ô nhập prompt, và chọn mô hình Pixtral trong danh sách mô hình có sẵn.

Chọn mô hình Pixtral trong Le Chat.

Pixtral là mô hình đa phương thức hỗ trợ cả văn bản và hình ảnh. Bằng cách dùng biểu tượng kẹp giấy phía dưới, bạn có thể tải lên một hoặc nhiều hình ảnh và kết hợp với một prompt văn bản. Chẳng hạn, chức năng này có thể giúp nhận diện một loại trái cây xuất hiện trong ảnh.

Ví dụ prompt đa phương thức dùng Pixtral trong Le Chat.

Hãy xem thêm một ví dụ khác: yêu cầu Pixtral chuyển một hình ảnh biểu đồ tròn thành bảng markdown:

Dùng Le Chat để chuyển biểu đồ thành bảng văn bản.

Cách kết nối API của Pixtral trên La Plateforme

Dù dùng Pixtral qua giao diện web khá tiện, nhưng không phù hợp để tích hợp vào dự án. Phần này sẽ thảo luận cách tương tác với Pixtral qua API bằng Python, thông qua La Plateforme.

Thiết lập hồ sơ

Đầu tiên, chúng ta cần tạo tài khoản. Có thể thực hiện chỉ với một nhấp chuột bằng tài khoản Google, hoặc tạo tài khoản truyền thống với tên người dùng và mật khẩu.

Sau khi tạo tài khoản, bạn sẽ được nhắc thiết lập workspace. Có thể chọn bất kỳ tên nào cho workspace và chọn tùy chọn "Tôi là người sáng tạo cá nhân".

Tạo workspace trong La Platforme.

Sau khi tạo tài khoản, hãy truy cập trang gói thanh toán. Tại đây, chúng ta có thể tạo gói thử nghiệm để dùng API miễn phí, hoặc thiết lập gói trả phí. Lưu ý gói thử nghiệm miễn phí yêu cầu liên kết số điện thoại hợp lệ với tài khoản.

Chọn gói thanh toán trong La Platforme.

Hồ sơ của chúng ta giờ đã sẵn sàng để tạo khóa API. Khóa này cần thiết để gửi yêu cầu tới Mistral API và tương tác với Pixtral bằng Python một cách lập trình.

Tạo khóa API

Để tạo khóa API, truy cập trang API key. Ở đầu trang có nút tạo khóa API mới:

Tạo API Keys trong La Platforme.

Khi tạo khóa, chúng ta được yêu cầu đặt tên và ngày hết hạn. Tuy nhiên, cả hai đều là tùy chọn, có thể để trống nếu muốn.

Biểu mẫu tạo API key cho La Plateforme của Mistral

Nhìn chung, nên thiết lập ngày hết hạn cho khóa. Thường thì khóa được tạo để thử nghiệm API rồi bị quên, khiến chúng hoạt động vô thời hạn. Đặt ngày hết hạn đảm bảo rằng nếu khóa bị rò rỉ, nó sẽ không bị lạm dụng mãi mãi, từ đó giảm thiểu rủi ro.

Lưu giữ khóa API sau khi tạo.

Khi khóa được tạo, nó sẽ được hiển thị. Đây là lần duy nhất có thể xem khóa, vì vậy cần sao chép lại. Nếu mất khóa, giải pháp là xóa khóa trong danh sách và tạo khóa mới.

Tôi khuyến nghị tạo tệp .env trong cùng thư mục với script Python để lưu khóa theo định dạng sau (thay <key_value> bằng giá trị khóa thực tế):

# contents of the .env fileAPI_KEY=<key_value>

Bỏ qua bước này và hardcode khóa API trong script là không nên. Làm vậy sẽ khiến bạn không thể chia sẻ mã mà không đồng thời chia sẻ khóa. Tìm hiểu thêm trong hướng dẫn về biến môi trường trong Python.

Cài đặt phụ thuộc

Trước hết, chúng ta cài đặt các phụ thuộc cần thiết, bao gồm:

  • mistralai, thư viện client do Mistral cung cấp để tương tác API.
  • python-dotenv, mô-đun dùng để tải biến môi trường từ tệp .env.
pip install python-dotenv mistralai

Sau khi cài xong phụ thuộc, chúng ta có thể tạo script. Tạo tệp mistral_example.py trong cùng thư mục với tệp .env. Bước đầu tiên là import các mô-đun và nạp khóa API vào biến.

# Create a mistral_example.py file in the same folder as the .env fileimport osfrom mistralai import Mistralfrom dotenv import load_dotenvload_dotenv()api_key = os.getenv("API_KEY")

Tiếp theo, chúng ta khởi tạo client.

Khởi tạo client

Trang tài liệu của Mistral cung cấp danh sách tất cả các mô hình khả dụng. Chúng ta đặc biệt quan tâm đến phiên bản Pixtral mới nhất với endpoint API pixtral-12b-2409.

# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)

Gửi yêu cầu API

Giờ chúng ta đã sẵn sàng gửi yêu cầu tới Mistral API và tương tác với Pixtral bằng mã. Dưới đây là ví dụ gửi một prompt văn bản:

# Add this code in mistral_example.py after initializing the clientchat_response = client.chat.complete(  model=model,  messages = [   {     "role": "user",     "content": [       {         "type": "text",         "text": "What is 1 + 1?"       }     ]   }, ])print(chat_response.choices[0].message.content)

Chúng ta có thể chạy script này trên terminal và xem phản hồi của Pixtral với prompt:

$ python mistral_example.py                  The sum of 1 + 1 is 2. So,1 + 1 = 2

Dùng API với đa phương thức

Trong ví dụ trên, prompt văn bản được gửi qua trường content, trong đó type đặt là "text".

{  "type": "text",  "text": "What is 1 + 1?"}

Trường content là một mảng cho phép gửi nhiều phần dữ liệu. Là một mô hình đa phương thức, Pixtral cũng chấp nhận dữ liệu hình ảnh. Để dùng hình ảnh từ URL trong prompt, ta có thể đưa vào trường content bằng cách chỉ định "image_url" làm type:

{  "type": "image_url",  "Image_url": "<image_url>” }

Thay <image_url> bằng URL thực của hình ảnh. Ví dụ, chúng ta có thể dùng Pixtral để phân tích các biểu đồ hiệu năng dưới đây:

Nguồn: Mistral AI

chat_response = client.chat.complete( model=model, messages = [   {     "role": "user",     "content": [       {         "type": "text",         "text": "According to the chart, how does Pixtral 12B performs compared to other models?"       },       {         "type": "image_url",         "image_url": "https://mistral.ai/images/news/pixtral-12b/pixtral-benchmarks.png"       }     ]   }, ])print(chat_response.choices[0].message.content)

Khi gửi yêu cầu này, Pixtral nhận cả prompt văn bản và hình ảnh chứa biểu đồ để phân tích, sau đó đưa ra phản hồi chi tiết. Chúng tôi không hiển thị phản hồi ở đây do độ dài đáng kể của nó.

Tải hình ảnh cục bộ

Trong ví dụ trước, chúng ta hiển thị hình ảnh từ URL. Ngoài ra, có thể dùng hình ảnh lưu trên ổ đĩa bằng cách nạp nó dưới dạng ảnh mã hóa base-64. Để nạp và mã hóa ảnh sang base-64, ta dùng gói tích hợp sẵn base64:

def encode_image_base64(image_path): with open(image_path, "rb") as image_file:   return base64.b64encode(image_file.read()).decode("utf-8")

Khi dùng ảnh mã hóa base-64, chúng ta vẫn dùng type image_url để cung cấp ảnh đã mã hóa nhưng cần thêm tiền tố data:image/jpeg;base64,:

{  "type": "image_url",  "image_url": f"data:image/jpeg;base64,{base_64_image}"}

base_64_image là kết quả của việc gọi hàm encode_image_base64() để nạp ảnh. Hãy dùng cách này để yêu cầu Pixtral xây dựng website danh sách việc cần làm (to-do) với hai trang dựa trên hai phác thảo tôi đã vẽ sau đây:

Bản phác thảo giao diện ứng dụng TODO.

Chúng ta cung cấp hai hình ảnh riêng biệt cùng với prompt yêu cầu tạo website HTML dựa trên các hình ảnh:

list_image = encode_image_base64("./todo-list.jpeg")new_item_image = encode_image_base64("./new-item-form.jpeg")chat_response = client.chat.complete( model=model, messages = [   {     "role": "user",     "content": [       {         "type": "text",         "text": "Create a HTML website with two pages like in the images"       },       {         "type": "image_url",         "image_url": f"data:image/jpeg;base64,{list_image}"       },       {         "type": "image_url",         "image_url": f"data:image/jpeg;base64,{new_item_image}"       },           ]   }, ])print(chat_response.choices[0].message.content)

Pixtral sẽ tạo hai khối mã với nội dung của hai trang. Chúng tôi lưu mã vào hai tệp index.html và add.html rồi mở trong trình duyệt. Kết quả như sau:

Ứng dụng TODO được kết xuất bởi Pixtral.

Dù chưa phải ứng dụng hoàn chỉnh, nó đã hoạt động và là điểm khởi đầu tuyệt vời để phát triển tiếp.

Kết luận

Pixtral 12B là mô hình đa phương thức đầu tiên của Mistral. Nó xử lý hình ảnh ở mọi kích thước mà không cần tiền xử lý, có cửa sổ ngữ cảnh 128K cho các prompt phức tạp và hoạt động tốt ở cả tác vụ chỉ văn bản lẫn đa phương thức. 

Có sẵn miễn phí cho các dự án không thương mại hóa và mã nguồn mở theo giấy phép Apache 2.0, Pixtral hữu ích cho cả nhà nghiên cứu và người đam mê.

Trong hướng dẫn này, tôi đã cung cấp các góc nhìn thực tiễn về cách sử dụng Pixtral, làm nổi bật khả năng của nó qua ví dụ và hướng dẫn từng bước.

Câu hỏi thường gặp

Pixtral có miễn phí không và trong điều kiện nào?

Pixtral miễn phí khi sử dụng trên Le Chat hoặc qua API cho các dự án không thương mại hóa.

Pixtral có phải mã nguồn mở không?

Có. Mô hình mã nguồn mở theo giấy phép Apache 2.0.

Pixtral hỗ trợ kiểu dữ liệu đầu vào nào?

Pixtral là LLM đa phương thức đầu tiên của Mistral AI. Nó hỗ trợ cả văn bản và hình ảnh.

Pixtral hỗ trợ kiểu hình ảnh nào?

Pixtral hỗ trợ hình ảnh ở mọi kích cỡ mà không cần bất kỳ loại tiền xử lý nào.

Điều gì khiến Pixtral quan trọng?

Pixtral có hiệu năng xuất sắc đối với một mô hình chỉ 12 tỷ tham số. Hơn nữa, có thể dùng miễn phí và là mã nguồn mở.

François Aubry

Tác giả

François Aubry

Kỹ sư full-stack & nhà sáng lập tại CheapGPT. Giảng dạy luôn là niềm đam mê của tôi. Từ những ngày còn là sinh viên, tôi đã háo hức tìm kiếm cơ hội kèm cặp và hỗ trợ các bạn học khác. Niềm đam mê đó đã thôi thúc tôi theo học tiến sĩ, nơi tôi cũng đảm nhiệm vai trò trợ giảng để hỗ trợ con đường học thuật của mình. Trong những năm ấy, tôi tìm thấy sự mãn nguyện lớn lao trong môi trường lớp học truyền thống, xây dựng kết nối và thúc đẩy việc học tập. Tuy nhiên, với sự ra đời của các nền tảng học trực tuyến, tôi nhận ra tiềm năng thay đổi của giáo dục số. Thực tế, tôi đã trực tiếp tham gia phát triển một nền tảng như vậy tại trường đại học của chúng tôi. Tôi tận tâm kết hợp các nguyên tắc giảng dạy truyền thống với những phương pháp số đổi mới. Đam mê của tôi là tạo ra các khóa học không chỉ hấp dẫn và giàu thông tin mà còn dễ tiếp cận với người học trong thời đại số này.

Chủ đề

Liên quan