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

Cách cài đặt và chạy QwQ 32B tại chỗ với Ollama

Tìm hiểu cách cài đặt, thiết lập và chạy QwQ-32B tại chỗ với Ollama và xây dựng một ứng dụng Gradio đơn giản.
· 12 phút đọc

Khám phá cùng AI

QwQ-32B là mô hình suy luận của Qwen, được thiết kế để vượt trội trong các tác vụ giải quyết vấn đề phức tạp và suy luận. Dù chỉ có 32 tỷ tham số, mô hình đạt hiệu năng tương đương DeepSeek-R1 có tới 671 tỷ tham số.

Trong hướng dẫn này, tôi sẽ dẫn bạn qua việc thiết lập và chạy QwQ-32B tại chỗ bằng Ollama, một công cụ giúp đơn giản hóa suy luận LLM cục bộ. Hướng dẫn này bao gồm: 

  • Chạy qua terminal hoặc IDE: Kèm các đoạn mã ngắn gọn để chạy QwQ-32B qua terminal hoặc IDE bạn chọn.
  • Bản demo thực hành: Xây dựng một dự án demo tận tay khai thác khả năng tư duy có cấu trúc của QwQ-32B.

Vì sao nên chạy QwQ-32B tại chỗ?

Mặc dù có kích thước lớn, QwQ-32B có thể được lượng tử hóa để chạy hiệu quả trên phần cứng phổ thông. Chạy QwQ-32B tại chỗ giúp bạn toàn quyền kiểm soát quá trình thực thi mô hình mà không phụ thuộc máy chủ bên ngoài. Dưới đây là vài lợi ích khi chạy QwQ-32B tại chỗ:

  • Quyền riêng tư & bảo mật: Không có dữ liệu rời khỏi hệ thống của bạn.
  • Truy cập không gián đoạn: Tránh giới hạn tốc độ, thời gian ngừng hoạt động hoặc gián đoạn dịch vụ.
  • Hiệu năng: Phản hồi nhanh hơn nhờ suy luận cục bộ, tránh độ trễ API.
  • Tùy biến: Điều chỉnh tham số, tinh chỉnh prompt và tích hợp mô hình vào ứng dụng cục bộ.
  • Tiết kiệm chi phí: Loại bỏ phí API bằng cách chạy mô hình tại chỗ.
  • Khả dụng ngoại tuyến: Làm việc không cần kết nối Internet sau khi tải mô hình.

Thiết lập QwQ-32B tại chỗ với Ollama

Ollama đơn giản hóa việc chạy LLM tại chỗ bằng cách xử lý tải mô hình, lượng tử hóa và thực thi.

Bước 1: Cài đặt Ollama

Tải và cài đặt Ollama từ trang web chính thức. 

Downloading Ollama

Sau khi tải xong, hãy cài đặt ứng dụng Ollama như với các ứng dụng khác. 

Bước 2: Tải và chạy QwQ-32B

Hãy kiểm tra thiết lập và tải mô hình. Mở terminal và nhập lệnh sau để tải và chạy mô hình QwQ-32B:

ollama run qwq:32b

Downloading Qwen QwQ 32B model via Ollama

QwQ-32B là mô hình lớn. Nếu hệ thống của bạn hạn chế tài nguyên, bạn có thể chọn các phiên bản lượng tử hóa nhỏ hơn. Ví dụ, bên dưới chúng ta dùng phiên bản Q4_K_M, là mô hình 19,85GB cân bằng giữa hiệu năng và kích thước:

ollama run qwq:Q4_K_M

qwq-32b quantized versions

Nguồn: Hugging Face

Bạn có thể tìm thêm các mô hình đã lượng tử hóa tại đây.

Bước 3: Chạy QwQ-32B ở chế độ nền

Để chạy QwQ-32B liên tục và phục vụ qua API, hãy khởi động máy chủ Ollama:

ollama serve

Điều này sẽ giúp mô hình sẵn sàng cho các ứng dụng, sẽ được thảo luận ở phần tiếp theo.

Sử dụng QwQ-32B tại chỗ

Giờ QwQ-32B đã sẵn sàng, hãy cùng khám phá cách tương tác với nó.

Bước 1: Chạy suy luận qua CLI

Sau khi tải mô hình, bạn có thể tương tác trực tiếp với QwQ-32B trong terminal:

ollama run qwq
How many r's are in the word "strawberry”?

QwQ 32b model running in terminal

Phản hồi của mô hình thường gồm phần suy nghĩ (được bao trong các thẻ <think> </think>) tiếp theo là câu trả lời cuối cùng.

Bước 2: Truy cập QwQ-32B qua API

Để tích hợp QwQ-32B vào ứng dụng, bạn có thể dùng API của Ollama với curl. Chạy lệnh curl sau trong terminal của bạn.

curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
  "model": "qwq",
  "messages": [{"role": "user", "content": "Explain Newton second law of motion"}], 
  "stream": false
}'

curl là công cụ dòng lệnh gốc trên Linux nhưng cũng hoạt động trên macOS. Nó cho phép người dùng thực hiện các yêu cầu HTTP trực tiếp từ terminal, rất hữu ích để tương tác với API.

Running QwQ 32b model using curl command

Lưu ý: Hãy đảm bảo đặt dấu ngoặc kép đúng chỗ và chọn đúng cổng localhost để tránh lỗi dquote.

Bước 3: Chạy QwQ-32B với Python

Chúng ta có thể chạy Ollama trong bất kỳ môi trường phát triển tích hợp (IDE) nào. Bạn có thể cài đặt gói Python của Ollama bằng đoạn mã sau: 

pip install ollama

Sau khi cài đặt Ollama, dùng đoạn mã sau để tương tác với mô hình:

import ollama
response = ollama.chat(
    model="qwq",
    messages=[
        {"role": "user", "content": "Explain Newton's second law of motion"},
    ],
)
print(response["message"]["content"])

Hàm ollama.chat() nhận tên mô hình và prompt của người dùng, xử lý theo dạng hội thoại. Script sau đó trích xuất và in ra phản hồi của mô hình.

Running QwQ 32b model using Python

Chạy ứng dụng suy luận logic với QwQ-32B tại chỗ

Chúng ta có thể tạo một trợ lý suy luận logic đơn giản bằng QwQ-32B và Gradio, ứng dụng sẽ nhận câu hỏi người dùng nhập vào và tạo phản hồi logic có cấu trúc. Ứng dụng này sẽ tận dụng cách tư duy theo từng bước của QwQ-32B để đưa ra câu trả lời rõ ràng, có cơ sở, hữu ích cho giải quyết vấn đề, hỗ trợ học tập và ra quyết định với AI.

Bước 1: Điều kiện tiên quyết

Trước khi triển khai, hãy đảm bảo chúng ta đã cài đặt các công cụ và thư viện sau:

  • Python 3.8+
  • Gradio: Để tạo giao diện web thân thiện.
  • Ollama: Thư viện để truy cập mô hình tại chỗ

Chạy các lệnh sau để cài đặt phụ thuộc cần thiết:

pip install gradio ollama

Sau khi các phụ thuộc trên được cài đặt, chạy các lệnh import sau:

import gradio as gr
import ollama
import re

Bước 2: Gửi truy vấn đến QwQ 32B bằng Ollama

Giờ chúng ta đã có đầy đủ phụ thuộc, sẽ xây dựng hàm truy vấn để chuyển câu hỏi tới mô hình và nhận về phản hồi có cấu trúc.

def query_qwq(question):
    response = ollama.chat(
        model="qwq",
        messages=[{"role": "user", "content": question}]
    )
    full_response = response["message"]["content"]
    # Extract the <think> part and the final answer
    think_match = re.search(r"<think>(.*?)</think>", full_response, re.DOTALL)
    think_text = think_match.group(1).strip() if think_match else "Thinking process not explicitly provided."
    final_response = re.sub(r"<think>.*?</think>", "", full_response, flags=re.DOTALL).strip()
    return think_text, final_response

Hàm query_qwq() tương tác với mô hình Qwen QwQ-32B qua Ollama, gửi câu hỏi do người dùng cung cấp và nhận về phản hồi có cấu trúc. Hàm trích xuất hai thành phần chính:

  1. Quy trình suy nghĩ: Bao gồm các bước lập luận của mô hình (trích xuất từ các thẻ <think>...</think>).
  2. Phản hồi cuối:  Phần này là câu trả lời cuối cùng có cấu trúc sau khi suy luận (loại trừ phần <think>).

Cách này tách riêng các bước lập luận và phản hồi cuối, đảm bảo tính minh bạch về cách mô hình đi đến kết luận.

Bước 3: Tạo giao diện Gradio

Giờ khi đã có hàm lõi, chúng ta sẽ xây dựng giao diện Gradio.

interface = gr.Interface(
    fn=query_qwq,
    inputs=gr.Textbox(label="Ask a logical reasoning question"),
    outputs=[gr.Textbox(label="Thinking Process"), gr.Textbox(label="Final Response")],
    title="QwQ-32B Powered: Logical Reasoning Assistant",
    description="Ask a logical reasoning question and the assistant will provide an explanation."
)
interface.launch(debug = True)

Giao diện Gradio này thiết lập một trợ lý suy luận logic nhận câu hỏi do người dùng nhập qua hàm gr.Textbox() và xử lý bằng hàm query_qwq(). Cuối cùng, hàm interface.launch() khởi chạy ứng dụng Gradio với chế độ gỡ lỗi bật, cho phép theo dõi lỗi và log theo thời gian thực để khắc phục sự cố.

QwQ 32b demo with gradio

Kết luận

Chạy QwQ-32B tại chỗ với Ollama mang lại suy luận mô hình riêng tư, nhanh và tiết kiệm chi phí. Với hướng dẫn này, bạn có thể khám phá khả năng suy luận nâng cao của mô hình theo thời gian thực. Mô hình này có thể dùng cho các ứng dụng như hỗ trợ học tập bằng AI, giải quyết vấn đề dựa trên logic và nhiều hơn nữa.

Aashi Dutt

Tác giả

Aashi Dutt

Tôi là Chuyên gia Google Developers trong lĩnh vực ML (Gen AI), Chuyên gia Kaggle 3x và Đại sứ Women Techmakers với hơn 3 năm kinh nghiệm trong ngành công nghệ. Tôi đồng sáng lập một startup công nghệ y tế vào năm 2020 và hiện đang theo học thạc sĩ khoa học máy tính tại Georgia Tech, chuyên sâu về học máy.

Chủ đề

Liên quan