Hugging Face là gì? Tìm và chạy model AI bằng Python cho người mới (2026)

AI

Trong bài này
  1. Hugging Face là gì?
  2. Cần chuẩn bị
  3. Bước 1: Mở Hugging Face và làm quen giao diện
  4. Bước 2: Tìm model theo tác vụ và ngôn ngữ
  5. Bước 3: Đọc model card trước khi dùng
  6. Bước 4: Lấy code mẫu từ nút "Use this model"
  7. Bước 5: Cài Python, transformers và PyTorch bản CPU
  8. Bước 6: Chạy pipeline đầu tiên, và vì sao phải chọn model
  9. Bước 7: Tìm và tải model bằng lệnh hf
  10. Bước 8: Chat tiếng Việt với Qwen3.5-0.8B trên CPU
  11. Bước 9: Thử ứng dụng AI có sẵn trên Spaces
  12. Lỗi thường gặp
  13. Thiếu Torchvision và PIL khi nạp Qwen3.5
  14. Access denied ... requires approval (model gated)
  15. Cảnh báo "You are sending unauthenticated requests"
  16. Câu hỏi thường gặp
  17. Dùng Hugging Face có mất tiền không?
  18. Máy không có GPU có chạy được không?
  19. Model tải về nằm ở đâu, xóa thế nào?
  20. Dùng model trên Hugging Face cho đồ án được không?
  21. Hugging Face khác gì Ollama?
  22. Nguồn tham khảo

Khi học AI, các bạn sẽ gặp cái tên Hugging Face ở khắp nơi: trong bài hướng dẫn, trong code mẫu, trong cả Ollama và LM Studio. Bài này giải thích Hugging Face là gì, rồi hướng dẫn từng bước để các bạn tự tìm một model, đọc thông tin của nó và chạy thử bằng Python trên máy không có GPU: phân loại cảm xúc câu tiếng Việt và chat với model Qwen3.5-0.8B.

Mọi lệnh trong bài mình chạy thật ngày 11/11/2026 với Python 3.12, transformers 5.22.2 (bản mới nhất trên PyPI, phát hành 06/11/2026), PyTorch 2.15 bản CPU và huggingface_hub 2.4.0. Làm theo hết bài mất khoảng 30–45 phút, phần lớn là thời gian tải thư viện và model.

Video demo trên kênh Huy Nguyen - Android A - Z.

Hugging Face là gì?

Hiểu đơn giản, Hugging Face là "GitHub của AI". Đây là nơi các công ty và cá nhân đăng model, bộ dữ liệu và ứng dụng demo để mọi người tải về hoặc dùng thử. Hugging Face cũng làm ra thư viện Python transformers, thư viện phổ biến nhất để tải và chạy các model này. Trang web có ba khu vực chính:

  • Models: kho model (trang chủ ghi hơn 2 triệu model), mỗi model là một repo có file trọng số, cấu hình và trang mô tả.
  • Datasets: bộ dữ liệu để huấn luyện và đánh giá model.
  • Spaces: ứng dụng demo chạy ngay trên trình duyệt.

Cần chuẩn bị

  • Máy tính Windows, macOS hoặc Linux, RAM từ 8 GB trở lên. Không cần GPU.
  • Python 3.11 trở lên. Trang PyPI ghi transformers bản 5.x yêu cầu Python >= 3.11.
  • Khoảng 3–4 GB ổ cứng trống cho thư viện và model.
  • Không cần tài khoản Hugging Face cho các model công khai trong bài. Chỉ model "gated" mới cần đăng nhập (xem phần lỗi).

Bước 1: Mở Hugging Face và làm quen giao diện

Vào huggingface.co. Thanh menu trên cùng có Models, Datasets, Spaces và Docs. Chưa cần đăng ký.

Trang chủ Hugging Face với menu Models, Datasets, Spaces và nút Browse 2M+ models
Bước 1: trang chủ Hugging Face, menu Models / Datasets / Spaces ở trên cùng.

Bước 2: Tìm model theo tác vụ và ngôn ngữ

Bấm Models. Cột trái có tab Tasks để lọc theo tác vụ (ví dụ Text Classification là phân loại văn bản). Ô tìm kiếm phía trên danh sách lọc theo tên, mình gõ vietnamese. Nút Sort nên chọn Most downloads để model được nhiều người dùng nhất lên đầu. Hôm mình chụp, có 83 model phân loại văn bản khớp từ khóa này.

Danh sách model Text Classification lọc theo từ khóa vietnamese, sắp xếp theo lượt tải
Bước 2: lọc tác vụ, gõ từ khóa và sắp xếp theo lượt tải.

Bước 3: Đọc model card trước khi dùng

Bấm vào một model để mở model card (trang mô tả). Ví dụ với Qwen/Qwen3.5-0.8B, các bạn để ý ba chỗ: License (giấy phép, ở đây là apache-2.0, dùng được cả cho mục đích thương mại), Model size (0.9B tham số, đủ nhỏ cho CPU) và Downloads last month (hơn 3,4 triệu lượt, nghĩa là được dùng nhiều).

Model card của Qwen3.5-0.8B, khoanh đỏ giấy phép apache-2.0, số lượt tải và kích thước 0.9B params
Bước 3: giấy phép, lượt tải và kích thước model trên model card.

Tab Files and versions cho biết model nặng bao nhiêu khi tải về. Ở đây file trọng số model.safetensors nặng 1,75 GB, cả repo là 1,77 GB.

Tab Files and versions của Qwen3.5-0.8B, file model.safetensors nặng 1.75 GB
Bước 3: tab Files and versions, file trọng số nặng 1,75 GB.

Bước 4: Lấy code mẫu từ nút "Use this model"

Bấm nút Use this model ở góc phải, chọn Transformers trong mục Libraries. Menu này cũng có Google Colab, Kaggle và các ứng dụng chạy local như vLLM.

Menu Use this model mở ra, khoanh đỏ mục Transformers
Bước 4: Use this model, chọn Transformers.

Hộp thoại hiện hai cách dùng: pipeline (gọn, dễ dùng) và nạp trực tiếp bằng AutoProcessor và AutoModelForMultimodalLM. Ở bước 8 mình sẽ dùng cách thứ hai.

Hộp thoại How to use from the Transformers library với code mẫu pipeline và AutoModelForMultimodalLM
Bước 4: code mẫu do Hugging Face sinh sẵn cho model.

Bước 5: Cài Python, transformers và PyTorch bản CPU

Tạo môi trường ảo cho riêng dự án, rồi cài PyTorch và transformers. Mình chạy trên Linux nên dùng kho PyTorch bản CPU để khỏi tải bản CUDA rất nặng. Trên Windows hoặc macOS, các bạn lấy đúng lệnh cài PyTorch cho máy mình ở trang PyTorch Get Started.

python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install transformers accelerate

Kiểm tra lại phiên bản bằng một file kiem_tra.py nhỏ:

import sys, torch, transformers, huggingface_hub

print("Python      ", sys.version.split()[0])
print("transformers", transformers.__version__)
print("torch       ", torch.__version__)
print("hf_hub      ", huggingface_hub.__version__)
Terminal cài transformers 5.22.2 và kết quả kiểm tra phiên bản Python, torch, huggingface_hub
Bước 5: cài xong transformers 5.22.2, torch 2.15.0+cpu, huggingface_hub 2.4.0.

Gói huggingface_hub được cài kèm và có sẵn lệnh hf dùng ở bước 7.

Bước 6: Chạy pipeline đầu tiên, và vì sao phải chọn model

pipeline() là cách ngắn nhất để dùng một model. Thử viết file cam_xuc.py mà không ghi tên model:

from transformers import pipeline

# Không ghi model: transformers tự chọn model mặc định cho tác vụ
clf = pipeline("sentiment-analysis")

cau = [
    "This course is really useful for beginners.",
    "Môn này khó quá, mình không hiểu gì cả.",
    "Thầy giảng dễ hiểu, bài tập vừa sức.",
]
for c in cau:
    print(c, "->", clf(c))

Chương trình chạy được, nhưng transformers cảnh báo nó tự lấy model mặc định distilbert-base-uncased-finetuned-sst-2-english, một model chỉ học tiếng Anh. Kết quả là câu khen "Thầy giảng dễ hiểu, bài tập vừa sức" bị chấm NEGATIVE.

Kết quả pipeline mặc định chấm câu tiếng Việt tích cực thành NEGATIVE, kèm cảnh báo No model was supplied
Bước 6: model mặc định chỉ biết tiếng Anh nên chấm sai câu tiếng Việt.

Vì vậy luôn ghi rõ tên model. Mình đổi sang tabularisai/multilingual-sentiment-analysis, model mà model card ghi là có hỗ trợ tiếng Việt (file cam_xuc_da_ngon_ngu.py):

from transformers import pipeline

clf = pipeline("text-classification", model="tabularisai/multilingual-sentiment-analysis")

for c in ["Môn này khó quá, mình không hiểu gì cả.",
          "Thầy giảng dễ hiểu, bài tập vừa sức.",
          "Hôm nay lớp học bình thường."]:
    print(c, "->", clf(c))
Model đa ngôn ngữ chấm đúng ba câu tiếng Việt: Negative, Positive, Neutral
Bước 6: model đa ngôn ngữ chấm đúng cả ba câu.

Lần này cả ba câu đều đúng: Negative, Positive và Neutral. Lưu ý model này dùng giấy phép CC-BY-NC-4.0, tức chỉ dùng cho mục đích phi thương mại. Làm bài tập và đồ án ở trường thì được, còn làm sản phẩm bán thì không.

Bước 7: Tìm và tải model bằng lệnh hf

Ngoài trang web, các bạn có thể tìm model ngay trong terminal. Lệnh dưới đây làm đúng việc của bước 2:

hf models ls --search vietnamese --pipeline-tag text-classification \
  --sort downloads --limit 6 --expand downloads,pipeline_tag --no-truncate
Lệnh hf models ls liệt kê 6 model phân loại văn bản tiếng Việt kèm số lượt tải
Bước 7: tìm model bằng hf models ls, kết quả giống trên web.

Để tải sẵn model về máy, dùng hf download. Model được lưu vào thư mục cache .cache/huggingface/hub trong thư mục người dùng, lần sau Python nạp thẳng từ đây chứ không tải lại. Lệnh hf cache ls cho biết các model đang chiếm bao nhiêu ổ cứng. Ở máy mình, 1,7 GB của Qwen3.5-0.8B tải xong trong khoảng 5 giây.

hf download Qwen/Qwen3.5-0.8B
hf cache ls
Lệnh hf download tải Qwen3.5-0.8B và hf cache ls liệt kê 4 model tổng cộng 2.6G
Bước 7: tải model bằng hf download, xem dung lượng bằng hf cache ls.

Bước 8: Chat tiếng Việt với Qwen3.5-0.8B trên CPU

Qwen3.5-0.8B là model chat kiêm đọc ảnh (Image-Text-to-Text), nên mình dùng đúng các lớp trong code mẫu ở bước 4 và chỉ gửi văn bản. File chat_qwen.py:

import time
from transformers import AutoProcessor, AutoModelForMultimodalLM

model_id = "Qwen/Qwen3.5-0.8B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

messages = [{"role": "user", "content": [
    {"type": "text", "text": "Giải thích ngắn gọn cho sinh viên năm nhất: biến trong lập trình là gì? "
                             "Trả lời bằng tiếng Việt, tối đa 3 câu."}
]}]
inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt"
).to(model.device)

t1 = time.time()
outputs = model.generate(**inputs, max_new_tokens=150)
answer = processor.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True)
print("Trả lời:", answer.strip())
n = outputs.shape[-1] - inputs["input_ids"].shape[-1]
print(f"Sinh {n} token trong {time.time() - t1:.1f} giây (CPU 4 nhân)")
Qwen3.5-0.8B trả lời bằng tiếng Việt câu hỏi biến trong lập trình là gì, sinh 69 token trong 21.5 giây
Bước 8: model trả lời bằng tiếng Việt, 69 token trong 21,5 giây trên CPU 4 nhân.

Câu trả lời đúng ý chính nhưng diễn đạt hơi vụng ("tên các tên gọi"), đó là giới hạn của model chưa tới 1 tỉ tham số. Tốc độ khoảng 3 token mỗi giây, đủ để học và thử nghiệm. Các dòng cảnh báo falling back to its reference PyTorch implementation chỉ báo là đang dùng code dự phòng chậm hơn, kết quả vẫn đúng.

Bước 9: Thử ứng dụng AI có sẵn trên Spaces

Muốn thử model mà không cài gì thì vào Spaces: các ứng dụng demo cộng đồng dựng sẵn, chạy trên máy chủ của Hugging Face. Mục Spaces of the week gom các app nổi bật trong tuần.

Trang Spaces của Hugging Face với mục Spaces of the week và các ứng dụng demo
Bước 9: Spaces là kho ứng dụng demo chạy ngay trên trình duyệt.

Lỗi thường gặp

Thiếu Torchvision và PIL khi nạp Qwen3.5

Lần đầu chạy chat_qwen.py, mình gặp ImportError: Qwen2VLImageProcessor requires the Torchvision library và lỗi tương tự cho PIL. Lý do là Qwen3.5 có phần xử lý ảnh, mà lệnh pip install transformers không cài sẵn hai thư viện này. Cách sửa: cài thêm torchvision và pillow (cùng nguồn với torch đã cài), rồi chạy lại.

pip install torchvision pillow --index-url https://download.pytorch.org/whl/cpu
Lỗi ImportError Qwen2VLImageProcessor requires the Torchvision library và lệnh cài torchvision pillow để sửa
Lỗi: thiếu torchvision và pillow, cài thêm là chạy được.

Access denied ... requires approval (model gated)

Một số model như meta-llama/Llama-3.2-1B-Instruct là model gated: tác giả bắt người dùng đồng ý điều khoản trước khi tải. Chạy hf download khi chưa đăng nhập sẽ báo Error: Access denied ... requires approval.

Lỗi Access denied khi hf download model gated meta-llama/Llama-3.2-1B-Instruct chưa có token
Lỗi: tải model gated khi chưa đăng nhập.

Mở trang model sẽ thấy khung "You need to agree to share your Hugging Face information to access this model". Theo tài liệu chính thức, các bạn phải đăng nhập, gửi yêu cầu truy cập ngay trên trình duyệt. Tùy tác giả cài đặt, yêu cầu được duyệt tự động hoặc phải chờ duyệt tay. Sau khi được duyệt, chạy hf auth login và dán token tạo ở trang Settings → Access Tokens thì mới tải được. Không bao giờ dán token vào code rồi đẩy lên GitHub.

Khung yêu cầu đồng ý chia sẻ thông tin để truy cập model Llama 3.2 trên Hugging Face
Lỗi: trang model gated yêu cầu đăng nhập và đồng ý điều khoản.

Cảnh báo "You are sending unauthenticated requests"

Chỉ là cảnh báo: chưa có token thì giới hạn tải thấp hơn. Với vài model nhỏ như trong bài vẫn tải bình thường. Tải nhiều thì đăng nhập bằng hf auth login.

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

Dùng Hugging Face có mất tiền không?

Xem và tải model công khai thì miễn phí, không cần tài khoản, toàn bộ phần thực hành trong bài mình làm không đăng nhập. Các gói trả phí (PRO, Inference Endpoints...) xem ở trang Pricing.

Máy không có GPU có chạy được không?

Được, với model nhỏ. Model phân loại cảm xúc khoảng 0.1B tham số chạy gần như tức thì. Qwen3.5-0.8B sinh khoảng 3 token mỗi giây trên CPU 4 nhân. Model từ vài tỉ tham số trở lên thì CPU sẽ rất chậm, nên dùng bản lượng tử hóa (GGUF) qua Ollama hoặc LM Studio.

Model tải về nằm ở đâu, xóa thế nào?

Mặc định nằm trong .cache/huggingface/hub ở thư mục người dùng. Lệnh hf cache ls liệt kê từng model và dung lượng. Muốn dọn dẹp thì xem các lệnh con bằng hf cache --help.

Dùng model trên Hugging Face cho đồ án được không?

Được, nhưng phải đọc mục License. Trong bài này, Qwen3.5-0.8B dùng apache-2.0 (thoải mái), model cảm xúc dùng CC-BY-NC-4.0 (chỉ phi thương mại), còn Llama 3.2 có giấy phép riêng của Meta. Trong báo cáo đồ án, các bạn nên ghi rõ tên model và giấy phép.

Hugging Face khác gì Ollama?

Hugging Face là kho model và thư viện để chạy model bằng code. Ollama là phần mềm chạy model trên máy, thường dùng bản GGUF lấy từ Hugging Face. Hai thứ bổ sung cho nhau. Muốn cho trợ lý AI gọi code của mình thì xem thêm bài MCP server là gì.

Nguồn tham khảo

Ảnh chụp và thử nghiệm ngày 11/11/2026.