Danh sách bài viết

Bài 15: Hugging Face Hub — kho model open source

Sau khi đã nắm Transformer architecture ở Module 2, Module 3 chuyển sang thực hành với hệ sinh thái Hugging Face. Bài này mở module, giới thiệu công ty Hugging Face và Hugging Face Hub — kho model + dataset + demo app open source quy mô lớn nhất hiện nay (1M+ model, 300K+ dataset, 500K+ Space tính từ 2025). Bài đi qua các category model, top series 2024-2026 (Llama, Mistral, Qwen, DeepSeek, Phi, Gemma, BERT, CLIP, Whisper, Stable Diffusion), cấu trúc model card, license thường gặp, cách filter/search, leaderboard, Spaces, Datasets, cách quản lý token cho gated model, Inference API và Inference Endpoints. Module 3 gồm 6 bài: B15 Hub overview, B16 Transformers library, B17 Pipeline API, B18 AutoModel/AutoTokenizer, B19 SLM local, B20 Datasets library.

25/05/2026
13 phút đọc
0 lượt xem
1

Mục tiêu bài học

Sau bài học, bạn sẽ:

  • Biết Hugging Face là công ty gì, ra đời năm nào, vị trí trong hệ sinh thái ML open source.
  • Hiểu Hub gồm ba thành phần lớn: Models, Datasets, Spaces — quy mô và mục đích từng phần.
  • Phân biệt các category model trên Hub (text, image, audio, video, multimodal) và biết top series 2024-2026.
  • Đọc được model card: architecture, training data, use case, license, limitations.
  • Phân biệt các license phổ biến (MIT, Apache 2.0, Llama license, CC-BY-NC) và biết loại nào cho commercial.
  • Biết tạo HF token, login CLI và truy cập gated model như Llama 3 hay Gemma.
  • Biết khác nhau giữa Inference API (hosted free quota) và Inference Endpoints (paid dedicated).
  • Có cái nhìn tổng thể về lộ trình Module 3 trước khi đi vào từng library cụ thể từ Bài 16.

Bài này là overview — không deep-dive code. Code Python chi tiết bắt đầu từ Bài 16 (transformers library).

2

Mở Module 3 — Hugging Face

Hết Module 2, bạn đã hiểu Transformer ở cấp độ kiến trúc: attention, self-attention, multi-head, positional encoding, encoder/decoder variants. Đó là phần lý thuyết.

Module 3 chuyển sang thực hành: load model có sẵn, chạy inference, fine-tune nhẹ, deploy demo. Để làm điều đó ở 2026 mà không phải tự viết lại Transformer từ đầu, công cụ phổ biến nhất là hệ sinh thái Hugging Face — gồm Hub (kho model), transformers (library code Python), datasets, tokenizers, accelerate, trl, peft

Module 3 không phủ hết toàn bộ; trọng tâm là cho bạn quen với Hub và thư viện transformers để chạy được một SLM (Small Language Model) trên máy cá nhân. Các phần advanced như fine-tune, RLHF, PEFT sẽ ở Module 8.

3

Hugging Face là gì

Hugging Face là công ty công nghệ thành lập năm 2016 tại New York, ban đầu làm chatbot. Năm 2018 chuyển hướng sang ML open source khi phát hành thư viện pytorch-pretrained-bert (sau đổi tên thành transformers).

Đến 2026, công ty vận hành:

  • huggingface.co — platform web, gồm Hub + docs + diễn đàn.
  • Một loạt thư viện open source: transformers, datasets, tokenizers, accelerate, peft, trl, diffusers, evaluate.
  • Sản phẩm thương mại: Inference Endpoints, Spaces tier trả phí, Enterprise Hub.

Mô hình kinh doanh: hosting + dedicated inference + enterprise feature. Phần lớn user dùng free tier.

4

Hugging Face Hub

Hugging Face Hub là kho lưu trữ tài nguyên ML, đôi khi được mô tả là "GitHub của ML model". Quy mô tính đến 2025:

  • 1M+ model public.
  • 300K+ dataset.
  • 500K+ Space (demo app host trên HF).

Mỗi tài nguyên là một repo Git: có thể clone, commit, version, mở pull request. Sự khác biệt với GitHub thuần là Hub được tối ưu cho file lớn (qua Git-LFS), có model card chuẩn hoá, có UI riêng cho từng loại model (widget chạy thử ngay trên web).

URL của một repo có dạng huggingface.co/<org>/<name>, ví dụ huggingface.co/meta-llama/Llama-3.2-1B.

5

Đối tượng dùng Hub

  • Researcher: upload model kèm paper để cộng đồng replicate. Ví dụ: tác giả paper mới push checkpoint kèm config để người khác chạy lại.
  • Engineer: pull model về dùng cho production. Pipeline điển hình: chọn model phù hợp task, đánh giá trên dataset riêng, deploy.
  • Startup: build sản phẩm trên open model (thay vì gọi API đóng). Lý do thường là chi phí, privacy, hoặc cần fine-tune sâu.
  • Hobbyist / học viên: thử model state-of-art free, không cần GPU đắt (chạy qua Inference API hoặc Spaces).

Phần lớn truy cập Hub đến từ hai nhóm sau cùng — engineer và hobbyist.

6

Ba kênh truy cập

  • Web: huggingface.co — duyệt model, đọc model card, chạy widget inference trực tiếp trong browser.
  • CLI: huggingface-cli — login, download, upload, quản lý repo từ terminal.
  • Python: thư viện huggingface_hubtransformers — code Python sẽ tự tải model về cache khi gọi from_pretrained() (Bài 16).

Ba kênh dùng chung một backend; đăng nhập một nơi là dùng được mọi nơi.

7

Categories model

Hub phân loại model theo modality và task. Bốn nhóm lớn:

  • Text: LLM (causal LM, instruct), embedding model (sentence-transformers), classifier (sentiment, NER), translation, summarization.
  • Image: classification, object detection, segmentation, generation (Stable Diffusion family).
  • Audio: ASR (Whisper, wav2vec2), TTS, audio classification.
  • Video: video classification, video-text retrieval, video generation (mới hơn, tập trung phát triển 2024-2026).
  • Multimodal: vision-language (CLIP, BLIP, LLaVA), document AI, vision-language-action cho robot.

Khi search trên Hub có thể filter theo "task" — đây là cách tiêu chuẩn để rút từ 1M model về vài chục candidate cho mục đích cụ thể.

8

Top model series 2024-2026

Danh sách dưới đây là các series được download / fork nhiều trên Hub giai đoạn 2024-2026, không phải bảng xếp hạng chất lượng. Mục đích: bạn biết tên để tra cứu.

  • Llama 3, 3.1, 3.2, 3.3 (Meta) — open weights, license riêng (xem Bước 10).
  • Mistral 7B, Mixtral 8x7B, 8x22B (Mistral AI) — Apache 2.0, dùng MoE cho bản Mixtral.
  • Qwen 2, 2.5, 3 (Alibaba) — Apache 2.0 cho phần lớn checkpoint, hỗ trợ đa ngôn ngữ trong đó có tiếng Việt.
  • DeepSeek-V3, R1, Coder (DeepSeek) — open weights, R1 nổi với reasoning chain-of-thought training.
  • Phi-3, Phi-4 (Microsoft) — SLM nhỏ (1.5B-14B) train kỹ trên synthetic data.
  • Gemma 2, Gemma 3 (Google) — open weights, license Gemma riêng.
  • BERT family (Google 2018 trở đi) — encoder-only, vẫn rất nhiều dùng cho classification / embedding.
  • CLIP (OpenAI 2021), SAM (Meta 2023) — backbone vision-language.
  • Whisper (OpenAI 2022) — ASR đa ngôn ngữ.
  • Stable Diffusion family (Stability AI) — generation ảnh, license CreativeML.

Mỗi series ở trên thường có nhiều biến thể: base / instruct / chat / quantized (GGUF, AWQ, GPTQ). Khi chọn model, đọc kỹ tên đầy đủ — ví dụ Llama-3.2-1B-Instruct khác Llama-3.2-1B ở chỗ bản instruct đã được fine-tune cho hội thoại.

9

Model card

Mỗi repo model trên Hub có một file README.md — gọi là model card. Đây là tài liệu chuẩn hoá mô tả model. Phần thông tin chính cần đọc:

  • Architecture — Transformer decoder-only, MoE, encoder, v.v.
  • Pretraining data — corpus, ngôn ngữ, lọc / khử trùng.
  • Use case — model phù hợp task nào, tránh task nào.
  • License — quyết định có dùng được cho commercial hay không.
  • Limitations & biases — giới hạn về hallucination, bias, multilingual coverage.
  • Citation — paper gốc cần cite nếu bạn publish kết quả.

Một model card đầy đủ thường có thêm: cách load bằng code, benchmark score, chat template (nếu là instruct), prompt format.

10

License thường gặp

License là phần dễ bị bỏ qua nhưng quan trọng nhất khi đưa vào product. Các nhóm phổ biến:

  • MIT, Apache 2.0 — permissive, dùng thoải mái cho cả thương mại lẫn non-commercial. Mistral, Qwen, DeepSeek, phần lớn BERT đều thuộc nhóm này.
  • Llama 2 / Llama 3 license — free commercial với điều kiện: nếu product có trên 700 triệu MAU (monthly active user) thì phải xin license riêng từ Meta. Phần lớn startup không vướng giới hạn này.
  • Llama 4 / phiên bản mới hơn (2025) — theo dõi terms riêng tại trang Meta, thay đổi theo phiên bản.
  • Gemma license — gần permissive nhưng có "use policy" cấm một số mục đích.
  • CC-BY-NC — non-commercial only. Không dùng cho product trả tiền hay sinh doanh thu.
  • OpenRAIL (Stable Diffusion) — permissive với một danh sách use case bị cấm.

Khi không chắc, kiểm tra trường license trên model card và đọc file LICENSE trong repo. Trong môi trường enterprise, nên có bước review legal trước khi đưa vào pipeline.

11

Filter và search

Với 1M+ model, tìm cái phù hợp cần kỹ năng filter. Trang huggingface.co/models hỗ trợ:

  • Tag task: text-classification, translation, image-segmentation, automatic-speech-recognition
  • Library: PyTorch, TensorFlow, JAX, Transformers, Diffusers, Sentence-Transformers, GGUF…
  • Language: code ISO (en, vi, zh…), filter theo ngôn ngữ pretrain.
  • License: lọc theo loại license.
  • Model size: theo số tham số (<1B, 1-3B, 3-7B, 7-13B…).
  • Sort: Trending, Most downloads, Most likes, Recently updated.

Workflow gợi ý: bắt đầu bằng tag task + language, sort theo downloads để có vài candidate ổn định, đọc model card, kiểm tra license, thử widget inference trên web trước khi clone về.

12

Leaderboard

Hub host nhiều leaderboard cho phép so sánh model có hệ thống. Bốn cái hay dùng:

  • Open LLM Leaderboard — rank các LLM open trên một bộ benchmark tự động (MMLU, ARC, HellaSwag, TruthfulQA, Winogrande, GSM8K… tuỳ bản v1, v2).
  • Chatbot Arena (LMSYS) — rank theo human preference: hai model trả lời ẩn danh, user vote ai trả lời tốt hơn. Có cả open lẫn closed model trong cùng bảng.
  • MTEB (Massive Text Embedding Benchmark) — rank model embedding trên hàng loạt task retrieval / classification / clustering.
  • Benchmark riêng từng task: HellaSwag, MMLU, GSM8K, HumanEval, MATH… kết quả thường có sẵn trong model card.

Lưu ý: leaderboard chỉ phản ánh một số khía cạnh; benchmark có thể bị "leak" vào training data hoặc bị model overfit. Khi chọn cho project, nên kết hợp leaderboard với đánh giá trên dataset riêng của bạn.

13

HF Spaces

Spaces là dịch vụ host demo app trên Hugging Face. Mỗi Space là một repo Git chứa code Python (Gradio / Streamlit / Docker), HF tự build và serve.

  • Tier free: CPU và GPU giới hạn (zero-GPU / time-shared GPU). Phù hợp demo nhỏ, traffic thấp.
  • Tier trả phí: GPU dedicated (T4, A10G, A100…), tính theo giờ.
  • Framework hỗ trợ chính: Gradio (mặc định, đơn giản), Streamlit, Docker (tuỳ ý).

Use case điển hình:

  • Tác giả paper publish Space cho reader thử model ngay trên web.
  • Engineer prototype UI cho model trước khi đóng gói thành sản phẩm.
  • Demo công khai khi viết blog / portfolio.
14

HF Datasets

Phần thứ ba của Hub là Datasets — 300K+ dataset cho mọi modality. Tương ứng có thư viện Python datasets:

from datasets import load_dataset

ds = load_dataset("squad")
print(ds["train"][0])

Thư viện hỗ trợ streaming (không cần tải toàn bộ vào disk), shuffle, split, map, filter — phù hợp cả dataset nhỏ vài MB lẫn lớn hàng TB. Bài 20 sẽ deep-dive: cách load, preprocess, push dataset riêng lên Hub.

15

Token và CLI

Để pull / push repo riêng tư hoặc gated model, cần HF access token. Tạo tại huggingface.co/settings/tokens. Mỗi token có scope:

  • Read — chỉ tải về.
  • Write — tải về và upload.
  • Fine-grained — chỉ định cụ thể repo / org được phép.

Login bằng CLI:

pip install -U huggingface_hub
huggingface-cli login
# dán token khi được hỏi

Sau khi login, token được lưu vào ~/.cache/huggingface/token. Mọi lệnh sau (download, push) đều dùng token này. Nguyên tắc: không commit token vào git, không paste trong notebook public, rotate định kỳ.

16

Gated model

Một số model yêu cầu user accept terms trước khi tải — gọi là gated model. Ví dụ điển hình: Llama 3 / 3.1 / 3.2, Gemma 2 / 3. Quy trình:

  1. Đăng nhập HF.
  2. Vào trang model (vd meta-llama/Llama-3.2-1B).
  3. Bấm nút "Agree and access repository" — điền form ngắn (tên, mục đích sử dụng).
  4. Chờ approval. Llama 3 thường auto-approve trong vài phút; một số model cần admin duyệt thủ công.
  5. Sau approval, dùng token đã login để pull bình thường.

Nếu chưa accept mà gọi from_pretrained() sẽ gặp lỗi 401 / 403. Đây là một trong những lỗi đầu tiên người mới gặp khi chạy code Llama.

17

Account và tier

  • Free — đủ cho cá nhân: tạo repo public không giới hạn, Inference API quota cơ bản, Spaces CPU free.
  • Pro (khoảng 9 USD/tháng, theo giá 2025) — quota Inference API cao hơn, Spaces ZeroGPU ưu tiên, badge Pro, một số feature beta.
  • Enterprise Hub — gói org: SSO, audit log, private hub, billing tập trung. Giá tuỳ deal.

Cho lộ trình học, free tier đủ; nâng cấp Pro chỉ khi thực sự đụng giới hạn quota Inference API hoặc cần ZeroGPU ổn định.

18

Download và cache

Hai cách phổ biến tải model:

  • Tự động qua transformers:
    from transformers import AutoModel
    
    model = AutoModel.from_pretrained("bert-base-uncased")
    
    Lần đầu chạy sẽ tải về cache; lần sau dùng bản cache, không tốn mạng.
  • Thủ công qua CLI:
    huggingface-cli download <org>/<model>
    
    Hữu ích khi muốn tải trước để dùng offline, hoặc tải sang server không có internet.

Mặc định cache nằm ở ~/.cache/huggingface/hub/. Có thể đổi qua biến môi trường HF_HOME hoặc HF_HUB_CACHE — quan trọng khi ổ chính nhỏ hoặc khi muốn share cache giữa nhiều user.

19

Upload model

Upload model của bạn lên Hub gồm hai bước:

  1. Login: huggingface-cli login với token có scope write.
  2. Push: trong code Python sau khi train xong:
    model.push_to_hub("<username>/<model-name>")
    tokenizer.push_to_hub("<username>/<model-name>")
    

Repo được tạo tự động nếu chưa tồn tại. Sau khi push, bạn có thể vào web edit README.md để viết model card. Đây là cách publish kết quả phổ biến cho dù bạn fine-tune 1 SLM nhỏ hay train từ scratch.

20

Storage và versioning

  • Repo public miễn phí dung lượng rộng rãi — phần lớn user không gặp giới hạn.
  • File lớn được quản lý bằng Git-LFS (Large File Storage) — tách binary khỏi history Git chính, phù hợp checkpoint vài chục GB.
  • Versioning chuẩn Git: mỗi commit có hash, có thể tạo branchtag. Khi load model có thể chỉ định revision (commit / branch / tag):
    model = AutoModel.from_pretrained("org/model", revision="v1.0")
    

Versioning quan trọng cho production: pin một revision cụ thể để inference không bị thay đổi bất ngờ khi tác giả push update.

21

Inference API

Inference API là dịch vụ inference hosted free (quota thấp) cho phần lớn model trên Hub. Không cần GPU local, gọi qua HTTP:

from huggingface_hub import InferenceClient

client = InferenceClient(token="hf_...")
out = client.text_generation(
    "Xin chào, bạn là ai?",
    model="meta-llama/Llama-3.2-1B-Instruct",
)
print(out)

Use case: prototype nhanh, không cần deploy gì, không cần GPU. Hạn chế: quota thấp với free tier, có thể có cold start, không phù hợp production traffic cao.

22

Inference Endpoints

Inference Endpoints là dịch vụ trả phí: deploy một model thành endpoint riêng, GPU dedicated, auto-scaling, SLA cao. Khác Inference API ở chỗ:

  • Tài nguyên dedicated, không chia sẻ với user khác.
  • Có thể chọn GPU cụ thể (T4, A10G, A100…), scale theo traffic.
  • Tính tiền theo giờ vận hành (uptime billing).
  • Phù hợp production khi đã chọn xong model open và cần SLA.

Đây là alternative cho OpenAI / Anthropic API khi muốn dùng open model với hạ tầng managed (không tự setup vLLM / TGI / Triton). Series 5 (Deployment) sẽ so sánh chi tiết giữa Inference Endpoints và self-host.

23

HF trong production

Nhiều startup ML build sản phẩm trên hệ sinh thái HF: từ chatbot doanh nghiệp, search vector, OCR, đến copilot code. Một số công ty model lớn (Mistral, Cohere, AI2, Stability) share model open trên Hub song song với phát hành chính thức. Một số company khác (Anthropic, OpenAI) không share weights nhưng vẫn upload paper hoặc tokenizer.

Nói cách khác: Hub đã trở thành nơi mặc định cho người ta tìm và publish artefact ML open. Đó là lý do thư viện transformers (Bài 16) được design xoay quanh Hub — gần như mọi model open đều có sẵn ở dạng tải được bằng một lệnh from_pretrained().

24

Lộ trình Module 3

Module 3 gồm 6 bài, tiếp theo từ bài này:

  • Bài 15 (bài hiện tại): HF Hub overview.
  • Bài 16: transformers library — cài đặt, kiến trúc thư viện, from_pretrained.
  • Bài 17: Pipeline API — 1 dòng code cho 1 task.
  • Bài 18: AutoModel / AutoTokenizer — control thấp hơn pipeline, cần khi tuỳ biến.
  • Bài 19: chạy SLM local — Phi-3, Llama-3.2-1B, Qwen 2.5 nhỏ trên máy cá nhân.
  • Bài 20: datasets library — load dataset, preprocess, push.

Sau Module 3, bạn có thể tự load và inference một model open bất kỳ trên Hub. Module 4 (Prompt Engineering) và Module 5 (OpenAI API) chuyển sang góc nhìn ứng dụng. Fine-tune sẽ ở Module 8.

25

Code Python

Đoạn code dưới mới ở mức preview — Bài 16 sẽ giải thích chi tiết từng API. Chạy được sau khi đã pip install -U transformers huggingface_hubhuggingface-cli login (nếu là gated model).

from huggingface_hub import hf_hub_download
from transformers import AutoModel, AutoTokenizer

# 1. Download trực tiếp một file trong repo (tuỳ chọn)
config_path = hf_hub_download(
    repo_id="bert-base-uncased",
    filename="config.json",
)
print("Saved to:", config_path)

# 2. Load cả model + tokenizer qua transformers
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModel.from_pretrained("bert-base-uncased")

# 3. (Gated) Load Llama 3.2 1B sau khi đã login + accept terms
# tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")
# model = AutoModel.from_pretrained("meta-llama/Llama-3.2-1B")

print("Loaded:", model.config.model_type, model.num_parameters())

Login CLI (chạy 1 lần):

huggingface-cli login
# dán token có scope Read (hoặc Write nếu cần push)
26

Bài tập

Bài 1 — Tạo account và token. Đăng ký HF account (nếu chưa có). Vào huggingface.co/settings/tokens tạo một token scope Read. Cài huggingface_hub và chạy huggingface-cli login. Verify bằng huggingface-cli whoami.

Bài 2 — Tìm model cho 3 task. Dùng filter trên huggingface.co/models, tìm 1 model phù hợp cho mỗi task:

  1. Sentiment classification (English).
  2. Translation EN → VI.
  3. Image classification (general).

Với mỗi model, ghi lại: tên đầy đủ, license, số tham số, số downloads, một ưu / nhược nhìn từ model card.

Bài 3 — Compare top 3 LLM trên Open LLM Leaderboard. Vào leaderboard, chọn 3 model có rank cao trong cùng tầm size (ví dụ 7B-9B). So sánh:

  • License (commercial được không).
  • Pretraining data đã biết.
  • Điểm 3 benchmark cụ thể (vd MMLU, GSM8K, HellaSwag).

Bài 4 — Trải nghiệm 1 Space. Vào huggingface.co/spaces, chọn 1 Space về ASR hoặc image generation. Chạy thử với input của bạn. Ghi lại: framework dùng (Gradio / Streamlit), latency tương đối, chất lượng output.

Bài 5 — Đọc model card. Mở model card của meta-llama/Llama-3.2-1B-Instruct. Tìm và ghi lại: architecture, context length, training data tổng quan, ngôn ngữ hỗ trợ, chat template, ít nhất 2 limitations được tác giả nêu.

27

Tóm tắt

  • Hugging Face là công ty 2016, chuyển sang ML open source từ 2018. Vận hành Hub + thư viện open source + dịch vụ inference.
  • Hub = "GitHub của ML model": 1M+ model, 300K+ dataset, 500K+ Space (2025). Mỗi repo là Git + Git-LFS.
  • Đối tượng dùng: researcher, engineer, startup, hobbyist. Truy cập qua web, CLI, hoặc thư viện Python.
  • Category model: text, image, audio, video, multimodal. Top series 2024-2026: Llama, Mistral, Qwen, DeepSeek, Phi, Gemma, BERT, CLIP, Whisper, Stable Diffusion.
  • Model card mô tả architecture, training data, use case, license, limitations, citation — đọc kỹ trước khi dùng.
  • License: MIT / Apache 2.0 permissive cho thương mại; Llama license free thương mại dưới 700M MAU; CC-BY-NC chỉ non-commercial.
  • Filter theo task, library, language, license, size; sort theo downloads / likes / trending.
  • Leaderboard hữu ích: Open LLM Leaderboard, Chatbot Arena, MTEB; cần kết hợp với đánh giá trên dataset riêng.
  • Spaces host demo (Gradio / Streamlit / Docker), free tier CPU + ZeroGPU.
  • Datasets: 300K+ dataset, dùng load_dataset() — chi tiết ở Bài 20.
  • Token tại huggingface.co/settings/tokens, login bằng huggingface-cli login. Cần cho gated model (Llama, Gemma).
  • Inference API free quota cho prototype; Inference Endpoints paid dedicated cho production.
  • Module 3 còn 5 bài: transformers library, Pipeline API, AutoModel / AutoTokenizer, SLM local, Datasets library.
  • Bài 16 đi vào thư viện transformers — công cụ chính để load và chạy mọi model trên Hub.