Hub Python Library documentation

Phân biệt Git và HTTP

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Phân biệt Git và HTTP

Thư viện huggingface_hub là thư viện để tương tác với Hugging Face Hub, một tập hợp các kho lưu trữ dựa trên git (mô hình, bộ dữ liệu hoặc Spaces). Có hai cách chính để truy cập Hub bằng huggingface_hub.

Cách tiếp cận đầu tiên, hay còn gọi là cách tiếp cận “dựa trên git”, dựa vào việc sử dụng các lệnh git tiêu chuẩn trực tiếp trong terminal. Phương pháp này cho phép bạn clone các repository, tạo các commit và đẩy (push) các thay đổi một cách thủ công. Lựa chọn thứ hai, được gọi là cách tiếp cận “dựa trên HTTP”, liên quan đến việc thực hiện các yêu cầu HTTP bằng cách sử dụng client HfApi. Hãy cùng xem xét ưu và nhược điểm của từng cách tiếp cận.

Git: phương pháp dựa trên CLI theo truyền thống

Ban đầu, hầu hết người dùng tương tác với Hugging Face Hub bằng các lệnh git thông thường như git clone, git add, git commit, git push, git tag, hoặc git checkout.

Cách tiếp cận này cho phép bạn làm việc với một bản sao cục bộ đầy đủ của kho lưu trữ trên máy của mình, giống như trong phát triển phần mềm truyền thống. Đây có thể là một lợi thế khi bạn cần truy cập ngoại tuyến hoặc muốn làm việc với toàn bộ lịch sử của một kho lưu trữ. Tuy nhiên, nó cũng đi kèm với những nhược điểm: bạn phải tự chịu trách nhiệm cập nhật kho lưu trữ cục bộ, xử lý thông tin xác thực và quản lý các tệp lớn (thông qua git-lfs), điều này có thể trở nên cồng kềnh khi làm việc với các mô hình học máy hoặc bộ dữ liệu lớn.

Trong nhiều quy trình học máy, bạn có thể chỉ cần tải xuống một vài tệp để suy luận hoặc chuyển đổi trọng số mà không cần clone toàn bộ kho. Trong những trường hợp như vậy, việc sử dụng git có thể là quá mức cần thiết và gây ra sự phức tạp không đáng có.

HfApi: một client HTTP linh hoạt và tiện lợi

Lớp HfApi được phát triển để cung cấp một phương án thay thế cho việc sử dụng các kho git cục bộ, vốn có thể gây khó khăn trong việc bảo trì, đặc biệt khi làm việc với các mô hình hoặc bộ dữ liệu lớn. Lớp HfApi cung cấp cùng các chức năng như các quy trình làm việc dựa trên git - chẳng hạn như tải xuống và đẩy tệp, tạo nhánh và thẻ - nhưng không cần đến một thư mục cục bộ phải được đồng bộ hóa.

Ngoài các tính năng đã có của git, lớp HfApi cung cấp thêm các chức năng như khả năng quản lý kho, tải tệp bằng bộ nhớ đệm để tái sử dụng hiệu quả, tìm kiếm kho và siêu dữ liệu trên Hub, truy cập các tính năng cộng đồng như thảo luận, PR và bình luận, cũng như cấu hình phần cứng và bí mật cho Spaces.

Tôi nên dùng gì? Và khi nào?

Nhìn chung, phương pháp dựa trên HTTP là cách được khuyến nghị để sử dụng huggingface_hub trong mọi trường hợp. HfApi cho phép bạn kéo và đẩy các thay đổi, làm việc với PR, tag và branch, tương tác với các cuộc thảo luận và nhiều hơn nữa.

Tuy nhiên, không phải tất cả các lệnh git đều khả dụng thông qua HfApi. Một số lệnh có thể sẽ không bao giờ được triển khai, nhưng chúng tôi luôn cố gắng cải thiện và thu hẹp khoảng cách này. Nếu bạn không thấy trường hợp sử dụng của mình được hỗ trợ, vui lòng mở một issue trên GitHub! Chúng tôi hoan nghênh phản hồi để cùng xây dựng hệ sinh thái HF với và cho người dùng của mình.

Việc ưu tiên HfApi dựa trên HTTP so với các lệnh git trực tiếp không có nghĩa là việc quản lý phiên bản bằng git sẽ biến mất khỏi Hugging Face Hub trong thời gian tới. Người dùng vẫn luôn có thể sử dụng git cục bộ trong các quy trình mà nó phù hợp.

Update on GitHub