Dùng AI

Hugging Face là gì? Khác gì GitHub

Hugging Face Hub là nền tảng chứa mô hình AI, bộ dữ liệu và ứng dụng demo (Spaces), mỗi thứ là một kho git có lịch sử phiên bản. GitHub mạnh về code và làm việc nhóm; Hugging Face mạnh về tệp mô hình rất lớn, thẻ mô hình ghi giấy phép và giới hạn, và chạy demo ngay trên trình duyệt. Dự án AI thường dùng cả hai.

Ý chính
  • Hugging Face Hub chứa ba loại kho: Models (mô hình), Datasets (bộ dữ liệu) và Spaces (ứng dụng demo). Theo tài liệu ngày 11/11/2026, Hub có hơn 3 triệu mô hình, hơn 1 triệu bộ dữ liệu và 2 triệu ứng dụng Spaces.
  • Kho trên Hub cũng là kho git, có lịch sử commit, nhánh và so sánh thay đổi; tệp lớn được lưu bằng công nghệ Xet thay vì để nguyên trong git.
  • Mỗi mô hình có thẻ mô hình (model card): mô tả, giới hạn, thiên lệch, giấy phép. Đọc thẻ trước khi tải.
  • Tải bằng thư viện huggingface_hub (hf_hub_download, snapshot_download) hoặc lệnh hf download. Mô hình bị khóa (gated) cần đăng nhập, gửi yêu cầu và dùng token.

Bài này dựa trên tài liệu Hugging Face Hub và thư viện huggingface_hub, đọc ngày 11/11/2026, cùng số liệu lấy từ API công khai của Hub cùng ngày.

Hugging Face Hub có gì

Tài liệu Hub mô tả đây là nền tảng cho học máy mở, chứa ba nhóm chính:

  • Models: mô hình cho văn bản, hình ảnh, âm thanh, mô hình ngôn ngữ lớn. Mỗi kho mô hình có thẻ mô hình để báo cho người dùng giới hạn và thiên lệch của mô hình, kèm siêu dữ liệu như tác vụ, ngôn ngữ, kết quả đánh giá.
  • Datasets: hơn 1 triệu bộ dữ liệu công khai thuộc hơn 8 nghìn ngôn ngữ, mỗi bộ có thẻ dữ liệu và công cụ xem dữ liệu ngay trên trình duyệt. Bộ dữ liệu quá lớn so với máy có thể đọc theo luồng (streaming) bằng thư viện datasets.
  • Spaces: ứng dụng demo chạy trên Hub. Hỗ trợ hai bộ công cụ Python là Gradio và Streamlit, trang HTML tĩnh, hoặc bất kỳ ứng dụng nào đóng gói bằng Docker. Cần GPU cho demo thì có ZeroGPU, cấp GPU khi có người dùng.

Ngoài ra còn tổ chức (organizations) để gom kho của một công ty, trường học hay nhóm nghiên cứu, và Storage Buckets cho các tệp lớn không cần quản lý phiên bản như điểm lưu khi huấn luyện.

Hugging Face khác GitHub ở đâu

GitHub Hugging Face Hub
Nội dung chính Code, tài liệu Trọng số mô hình, bộ dữ liệu, demo
Tệp lớn Không hợp với tệp vài GB Lưu tệp lớn bằng Xet, tải nhanh theo khối
Mô tả README Thẻ mô hình, thẻ dữ liệu có siêu dữ liệu (tác vụ, ngôn ngữ, giấy phép)
Làm việc nhóm Issue, pull request, Actions, review Pull request và thảo luận (Discussions) đơn giản hơn
Chạy thử Tự cài và chạy, hoặc Codespaces Spaces chạy demo ngay trên trình duyệt, widget thử mô hình
Kiểm soát truy cập Kho công khai, riêng tư Thêm mô hình bị khóa: người dùng gửi yêu cầu, tác giả duyệt

Cả hai đều dựa trên git: kho trên Hub cũng có lịch sử commit, nhánh và so sánh thay đổi. Cách dùng phổ biến cho một dự án AI là để code huấn luyện và chạy trên GitHub, còn trọng số mô hình đã huấn luyện, bộ dữ liệu và bản demo trên Hugging Face, rồi dẫn liên kết qua lại trong README. Thư viện transformers cũng có kho code trên GitHub, trong khi các mô hình nó tải về nằm trên Hub.

GitHub và Hugging Face Code ở GitHub, mô hình và dữ liệu ở Hugging Face GitHubCode, issue, PRActions chạy test ModelsTrọng số, thẻgiấy phép riêng DatasetsDữ liệu, thẻđọc theo luồng SpacesDemo GradioDocker, HTML Hugging Face cũng dùng git, tệp lớn lưu bằng Xet
GitHub và Hugging Face GitHubCode, issue, PRActions chạy test ModelsTrọng số, thẻgiấy phép riêng DatasetsDữ liệu, thẻđọc theo luồng SpacesDemo GradioDocker, HTML Hugging Face cũng dùng git, tệp lớn lưu bằng Xet
Hình 1. GitHub giữ code, issue, pull request và Actions chạy test; Hugging Face giữ Models (trọng số kèm thẻ mô hình, có thể mang giấy phép riêng), Datasets (dữ liệu kèm thẻ, đọc được theo luồng) và Spaces (demo Gradio, Docker, HTML). Hugging Face cũng dùng kho git, tệp lớn lưu bằng Xet.

Đọc thẻ mô hình trước khi tải

Thẻ mô hình là README của kho mô hình, có phần siêu dữ liệu ở đầu. Ba thứ cần xem: mô hình làm tác vụ gì, giấy phép, và mô hình có bị khóa không. Đoạn Python dưới đây đọc các thông tin đó qua API công khai của Hub (https://huggingface.co/api/models/{tên}), không cần token với mô hình công khai, rồi in nhắc nhở. Chạy không tham số thì dùng số liệu chụp lại ngày 11/11/2026 của ba mô hình; chạy python xem_the_mo_hinh.py --that vinai/phobert-base để lấy số mới.

"""Xem nhanh thông tin của một mô hình trên Hugging Face trước khi tải: làm việc gì, giấy phép, có bị khóa không.

Dùng API công khai: GET https://huggingface.co/api/models/{chủ}/{tên} (mô hình công khai không cần token).
Chạy không tham số: tóm tắt ba mô hình từ dữ liệu chụp lại ngày 11/11/2026, không cần mạng.
Chạy với --that chu/ten ...: gọi API thật.
"""
import json
import sys
import urllib.request

GIAY_PHEP_MO = {"mit", "apache-2.0", "bsd-3-clause", "bsd-2-clause", "cc-by-4.0", "cc0-1.0"}


def tom_tat(d):
    gp = (d.get("cardData") or {}).get("license") or "không ghi"
    khoa = d.get("gated")
    nhac = []
    if khoa:
        cach = "tác giả duyệt tay" if khoa == "manual" else "duyệt tự động"
        nhac.append(f"mô hình bị khóa ({cach}): đăng nhập, đồng ý điều kiện, dùng token khi tải")
    if gp == "không ghi":
        nhac.append("thẻ không ghi giấy phép: hỏi tác giả trước khi dùng")
    elif gp not in GIAY_PHEP_MO:
        nhac.append(f"giấy phép riêng '{gp}': đọc toàn văn trước khi dùng")
    return {
        "id": d["id"],
        "viec": d.get("pipeline_tag") or "?",
        "thu_vien": d.get("library_name") or "?",
        "giay_phep": gp,
        "nam_tao": d["createdAt"][:4],
        "cap_nhat": d["lastModified"][:10],
        "luot_tai": d.get("downloads", 0),
        "thich": d.get("likes", 0),
        "nhac": nhac or ["dùng được ngay; vẫn nên đọc thẻ mô hình"],
    }


def so_viet(n):
    return f"{n:,}".replace(",", ".")


def in_tom_tat(t):
    print(f"{t['id']}  [{t['viec']}, {t['thu_vien']}]")
    print(f"  giấy phép: {t['giay_phep']} | tạo {t['nam_tao']}, cập nhật {t['cap_nhat']} | "
          f"{so_viet(t['luot_tai'])} lượt tải, {so_viet(t['thich'])} lượt thích")
    for n in t["nhac"]:
        print("  -> " + n)


MAU = [  # chụp từ API ngày 11/11/2026 (chỉ giữ các trường cần dùng)
    {"id": "openai/whisper-small", "pipeline_tag": "automatic-speech-recognition", "library_name": "transformers",
     "gated": False, "downloads": 4412882, "likes": 647, "createdAt": "2022-09-26T06:51:27.000Z",
     "lastModified": "2024-02-29T10:57:38.000Z", "cardData": {"license": "apache-2.0"}},
    {"id": "google/gemma-3-1b-it", "pipeline_tag": "text-generation", "library_name": "transformers",
     "gated": "manual", "downloads": 212229, "likes": 1313, "createdAt": "2025-03-10T12:09:00.000Z",
     "lastModified": "2025-04-04T13:12:40.000Z", "cardData": {"license": "gemma"}},
    {"id": "vinai/phobert-base", "pipeline_tag": "fill-mask", "library_name": "transformers",
     "gated": False, "downloads": 137095, "likes": 74, "createdAt": "2022-03-02T23:29:05.000Z",
     "lastModified": "2026-08-03T15:03:30.000Z", "cardData": {"license": "mit"}},
]


def chay_thu():
    ds = [tom_tat(d) for d in MAU]
    for t in ds:
        in_tom_tat(t)
    return ds


def lay_that(ma):
    with urllib.request.urlopen("https://huggingface.co/api/models/" + ma, timeout=20) as phan_hoi:
        return json.load(phan_hoi)


if __name__ == "__main__":
    if len(sys.argv) > 2 and sys.argv[1] == "--that":
        for ma in sys.argv[2:]:
            in_tom_tat(tom_tat(lay_that(ma)))
    else:
        chay_thu()

Ba mô hình mẫu cho ba tình huống khác nhau:

  • openai/whisper-small (nhận dạng giọng nói): giấy phép apache-2.0, không khóa, dùng được ngay. Lưu ý thú vị: README của kho GitHub openai/whisper ghi code và trọng số theo giấy phép MIT, còn thẻ trên Hub ghi apache-2.0. Cả hai đều là giấy phép dễ dãi, nhưng ví dụ này cho thấy nên đọc giấy phép ở đúng nơi bạn tải và đối chiếu khi thấy khác.
  • google/gemma-3-1b-it (sinh văn bản): bị khóa với chế độ tác giả duyệt tay, và dùng giấy phép riêng gemma. Phải đọc điều khoản trước khi dùng.
  • vinai/phobert-base: mô hình ngôn ngữ cho tiếng Việt của VinAI, giấy phép MIT, không khóa.

Giấy phép mô hình có thể khác hẳn giấy phép code và có khi giới hạn mục đích sử dụng; bài đọc README và LICENSE giải thích cách đọc.

Tải mô hình về máy

Cài thư viện: pip install -U huggingface_hub (theo tài liệu, từ phiên bản 0.32.0 lệnh này cài kèm hf_xet để tải nhanh hơn). Các cách tải theo hướng dẫn chính thức:

from huggingface_hub import hf_hub_download, snapshot_download

# Một tệp
duong_dan = hf_hub_download(repo_id="vinai/phobert-base", filename="config.json")

# Cả kho, nhưng chỉ lấy các tệp cấu hình .json
thu_muc = snapshot_download(repo_id="vinai/phobert-base", allow_patterns="*.json")

Từ dòng lệnh, hf download <tên-mô-hình> <tệp> làm việc tương tự. Mẹo hữu ích: thêm --dry-run để xem sẽ tải những tệp nào và tổng dung lượng bao nhiêu trước khi tải thật. Với các mô hình có nhiều định dạng trọng số, dùng allow_patterns hay --include để chỉ lấy định dạng bạn cần, tránh tải vài GB thừa.

Tệp tải về nằm trong bộ nhớ đệm (mặc định ở thư mục .cache/huggingface/hub trong thư mục người dùng; đổi được bằng biến môi trường HF_HOME). Tài liệu dặn không sửa tệp trong bộ nhớ đệm. Muốn có bản riêng trong thư mục dự án thì truyền local_dir. Tham số revision cho phép tải đúng một nhánh, thẻ hay commit, giúp kết quả lặp lại được.

Mô hình bị khóa (gated)

Theo tài liệu Gated models, tác giả có thể bật yêu cầu truy cập cho mô hình. Khi đó bạn phải đăng nhập tài khoản Hugging Face, mở trang mô hình trên trình duyệt, đồng ý chia sẻ thông tin (tên người dùng, email nếu tác giả thu thập, và các trường tác giả hỏi thêm) rồi gửi yêu cầu. Nếu tác giả chọn duyệt tự động, bạn có quyền ngay; nếu duyệt tay, phải chờ. Tài liệu cũng lưu ý tác giả có toàn quyền và có thể chặn quyền truy cập bất cứ lúc nào.

Để tải mô hình bị khóa bằng code, máy cần token: chạy hf auth login, hoặc truyền tham số token vào hàm tải. Token là thông tin bí mật: không đưa vào code, không commit lên GitHub, không dán vào notebook chia sẻ.

Dùng Hugging Face cho dự án của bạn

  • Tìm mô hình: lọc theo tác vụ, ngôn ngữ (ví dụ tiếng Việt), thư viện, giấy phép trên trang Models.
  • Chia sẻ mô hình của bạn: tạo kho mô hình, tải trọng số lên, viết thẻ mô hình nêu dữ liệu huấn luyện, kết quả và giới hạn.
  • Làm demo: một Space dùng Gradio với vài chục dòng code là có trang web cho người khác thử mô hình. Đây là phần rất có giá trị cho portfolio AI trên GitHub.
  • Chạy dự án từ GitHub: nhiều dự án tải mô hình từ Hub ở lần chạy đầu; xem chạy dự án AI từ GitHub.

Hugging Face và agent AI

Mục lục tài liệu Hub ngày 11/11/2026 có hẳn một phần Agents, gồm máy chủ MCP của Hugging Face, dòng lệnh hf dành cho agent và bộ Agent Skills. Nghĩa là một agent lập trình như Claude Code có thể được nối với Hub để tự tìm mô hình, đọc thẻ, tải tệp thay bạn. Nếu bạn chưa quen hai khái niệm này, đọc MCP là gì và Agent Skills là gì. Khi để agent tải mô hình, vẫn giữ nguyên tắc như khi tự làm: đọc giấy phép, xem dung lượng trước khi tải, và không đưa token vào chỗ agent có thể ghi ra ngoài.

Cẩn thận
  • Tải mô hình mà không đọc thẻ: không biết giấy phép, không biết giới hạn.
  • Thấy code MIT rồi cho rằng trọng số mô hình cũng dùng thương mại được.
  • Tải cả kho vài chục GB khi chỉ cần một định dạng trọng số.
  • Ưu tiên tệp trọng số định dạng pickle (.bin, .pt) của nguồn lạ thay vì .safetensors: định dạng pickle có thể chạy code khi nạp.
  • Dán token Hugging Face vào code rồi đẩy lên GitHub.

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

Hugging Face có miễn phí không?

Tạo tài khoản, tải mô hình và bộ dữ liệu công khai, tạo Space cơ bản đều miễn phí. Hub có các gói trả phí (PRO, Team, Enterprise) và phần cứng trả phí cho Space cần GPU mạnh.

Có cần tài khoản để tải mô hình không?

Mô hình công khai không bị khóa thì không cần. Mô hình bị khóa cần tài khoản, được duyệt và dùng token.

Nên để mô hình của mình trên GitHub hay Hugging Face?

Code để trên GitHub; trọng số mô hình, nhất là tệp lớn, để trên Hugging Face với thẻ mô hình đầy đủ, rồi dẫn liên kết qua lại.

Có mô hình cho tiếng Việt không?

Có. Lọc theo ngôn ngữ Vietnamese trên trang Models; ví dụ vinai/phobert-base là mô hình ngôn ngữ cho tiếng Việt, còn các mô hình đa ngôn ngữ như Whisper cũng hỗ trợ tiếng Việt.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483