Hub Python Library documentation
Công cụ tiện ích
Công cụ tiện ích
Cấu hình ghi log
Gói huggingface_hub cung cấp tiện ích logging để kiểm soát mức độ ghi log của chính gói này.
Bạn có thể import nó như sau:
from huggingface_hub import loggingSau đó, bạn có thể định nghĩa mức độ chi tiết để cập nhật số lượng nhật ký mà bạn sẽ thấy:
from huggingface_hub import logging
logging.set_verbosity_error()
logging.set_verbosity_warning()
logging.set_verbosity_info()
logging.set_verbosity_debug()
logging.set_verbosity(...)Các cấp độ nên được hiểu như sau:
error: chỉ hiển thị các nhật ký quan trọng về việc sử dụng có thể dẫn đến lỗi hoặc hành vi không mong muốn.warning: hiển thị các nhật ký không nghiêm trọng nhưng việc sử dụng có thể dẫn đến hành vi không mong muốn. Ngoài ra, các nhật ký thông tin quan trọng có thể được hiển thị.info: hiển thị hầu hết các nhật ký, bao gồm một số nhật ký chi tiết về những gì đang diễn ra bên trong. Nếu có điều gì đó hoạt động không như mong đợi, chúng tôi khuyến nghị chuyển mức độ chi tiết sang mức này để thu thập thêm thông tin.debug: hiển thị tất cả các nhật ký, bao gồm một số nhật ký nội bộ có thể được sử dụng để theo dõi chính xác những gì đang diễn ra bên trong.
Trả về mức hiện tại cho trình ghi log gốc của HuggingFace Hub.
HuggingFace Hub có các cấp độ ghi log sau:
huggingface_hub.logging.CRITICAL,huggingface_hub.logging.FATALhuggingface_hub.logging.ERRORhuggingface_hub.logging.WARNING,huggingface_hub.logging.WARNhuggingface_hub.logging.INFOhuggingface_hub.logging.DEBUG
huggingface_hub.utils.logging.set_verbosity
< source >( verbosity: int )
Đặt cấp độ cho trình ghi log gốc của HuggingFace Hub.
Đặt mức độ chi tiết thành logging.INFO.
Đặt mức độ chi tiết thành logging.DEBUG.
Đặt mức độ chi tiết thành logging.WARNING.
Đặt mức độ chi tiết thành logging.ERROR.
Tắt việc lan truyền các đầu ra nhật ký của thư viện. Lưu ý rằng lan truyền nhật ký bị tắt theo mặc định.
Bật việc lan truyền các đầu ra nhật ký của thư viện. Vui lòng tắt trình xử lý mặc định của HuggingFace Hub để tránh ghi nhật ký trùng lặp nếu trình ghi nhật ký gốc đã được cấu hình.
Các phương thức trợ giúp cụ thể cho kho
Các phương thức được liệt kê bên dưới có liên quan khi bạn sửa đổi các module từ chính thư viện huggingface_hub.
Việc sử dụng chúng không nên là cần thiết nếu bạn dùng huggingface_hub và không sửa đổi chúng.
huggingface_hub.utils.logging.get_logger
< source >( name: str | None = None )
Trả về một logger với tên được chỉ định. Hàm này không được thiết kế để người dùng thư viện truy cập trực tiếp.
Cấu hình thanh tiến trình
Thanh tiến trình là công cụ hữu ích để hiển thị thông tin cho người dùng trong khi một tác vụ chạy lâu đang được thực thi (ví dụ:
khi tải xuống hoặc tải lên tệp). huggingface_hub cung cấp một wrapper tqdm để hiển thị thanh tiến trình theo cách
nhất quán trong toàn bộ thư viện.
Mặc định, thanh tiến trình được bật. Bạn có thể tắt chúng toàn cục bằng cách đặt biến môi trường HF_HUB_DISABLE_PROGRESS_BARS. Bạn cũng có thể bật/tắt chúng bằng enable_progress_bars() và disable_progress_bars. Nếu được đặt, biến môi trường có ưu tiên cao hơn so với các hàm trợ giúp.
>>> from huggingface_hub import snapshot_download
>>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars
>>> # Disable progress bars globally
>>> disable_progress_bars()
>>> # Progress bar will not be shown !
>>> snapshot_download("gpt2")
>>> are_progress_bars_disabled()
True
>>> # Re-enable progress bars globally
>>> enable_progress_bars()Kiểm soát thanh tiến trình theo nhóm
Bạn cũng có thể bật hoặc tắt thanh tiến trình cho các nhóm cụ thể. Điều này cho phép bạn quản lý khả năng hiển thị của thanh tiến trình một cách chi tiết hơn trong các phần khác nhau của ứng dụng hoặc thư viện của mình. Khi một thanh tiến trình bị tắt cho một nhóm, tất cả các nhóm con bên dưới nó cũng bị ảnh hưởng trừ khi được ghi đè một cách rõ ràng.
# Disable progress bars for a specific group
>>> disable_progress_bars("peft.foo")
>>> assert not are_progress_bars_disabled("peft")
>>> assert not are_progress_bars_disabled("peft.something")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert are_progress_bars_disabled("peft.foo.bar")
# Re-enable progress bars for a subgroup
>>> enable_progress_bars("peft.foo.bar")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert not are_progress_bars_disabled("peft.foo.bar")
# Use groups with tqdm
# No progress bar for `name="peft.foo"`
>>> for _ in tqdm(range(5), name="peft.foo"):
... pass
# Progress bar will be shown for `name="peft.foo.bar"`
>>> for _ in tqdm(range(5), name="peft.foo.bar"):
... pass
100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]are_progress_bars_disabled
huggingface_hub.utils.are_progress_bars_disabled
< source >( name: str | None = None ) → bool
Kiểm tra xem thanh tiến trình có bị vô hiệu hóa toàn cục hay cho một nhóm cụ thể không.
Hàm này trả về trạng thái thanh tiến trình có bị vô hiệu hóa cho một nhóm cụ thể hoặc toàn cục hay không.
Nó kiểm tra biến môi trường HF_HUB_DISABLE_PROGRESS_BARS trước, sau đó là các cài đặt lập trình.
disable_progress_bars
lớp huggingface_hub.utils.disable_progress_bars
< source >( name: str | None = None )
Tắt thanh tiến trình toàn cục hoặc cho một nhóm được chỉ định.
Hàm này cập nhật trạng thái của các thanh tiến trình dựa trên tên nhóm.
Nếu không cung cấp tên nhóm, tất cả các thanh tiến trình sẽ bị vô hiệu hóa. Thao tác
này tuân theo cài đặt của biến môi trường HF_HUB_DISABLE_PROGRESS_BARS.
Hoạt động như một lời gọi thông thường và như một trình quản lý ngữ cảnh: disable_progress_bars() # tắt cho đến khi gọi enable_progress_bars() with disable_progress_bars(): # tắt trong khối, bật lại khi thoát …
enable_progress_bars
huggingface_hub.utils.enable_progress_bars
< source >( name: str | None = None )
Bật thanh tiến trình toàn cục hoặc cho một nhóm được chỉ định.
Hàm này bật thanh tiến trình cho nhóm được chỉ định hoặc toàn cục nếu không có nhóm nào được chỉ định. Thao tác này phụ thuộc vào cài đặt biến môi trường HF_HUB_DISABLE_PROGRESS_BARS.
Cấu hình Backend HTTP
Trong
huggingface_hubv0.x, các yêu cầu HTTP được xử lý bằngrequestsvà cấu hình được thực hiện thông quaconfigure_http_backend. Vì hiện tại chúng tôi sử dụnghttpx2, cách cấu hình hoạt động khác: bạn phải cung cấp một hàm factory không nhận đối số nào và trả về mộthttpx2.Client. Bạn có thể xem cài đặt mặc định tại đây để biết các tham số nào được sử dụng theo mặc định.
Trong một số cấu hình, bạn có thể cần kiểm soát cách các yêu cầu HTTP được thực hiện, chẳng hạn khi làm việc sau một proxy. Thư viện huggingface_hub cho phép bạn cấu hình điều này trên toàn cục bằng set_client_factory(). Sau khi cấu hình, tất cả các yêu cầu đến Hub sẽ sử dụng cài đặt tùy chỉnh của bạn. Vì huggingface_hub dựa vào httpx2.Client bên trong, bạn có thể xem tài liệu của httpx2 để biết chi tiết về các tham số khả dụng.
Nếu bạn đang xây dựng một thư viện bên thứ ba và cần thực hiện các yêu cầu trực tiếp đến Hub, hãy sử dụng get_session() để lấy một client httpx2 được cấu hình đúng. Thay thế các lệnh gọi trực tiếp httpx2.get(...) bằng get_session().get(...) để đảm bảo hành vi chính xác.
Đặt nhà máy client HTTP sẽ được sử dụng bởi huggingface_hub.
Client factory là một phương thức trả về một đối tượng httpx2.Client. Ở lần gọi đầu tiên của get_session(), client factory sẽ được sử dụng để tạo một đối tượng httpx2.Client mới, đối tượng này sẽ được chia sẻ giữa tất cả các cuộc gọi do huggingface_hub thực hiện.
Điều này có thể hữu ích nếu bạn đang chạy các script trong một môi trường cụ thể yêu cầu cấu hình tùy chỉnh (ví dụ: proxy hoặc chứng chỉ tùy chỉnh).
Sử dụng get_session() để lấy một httpx2.Client được cấu hình chính xác.
Lấy một đối tượng httpx2.Client, sử dụng nhà máy transport từ người dùng.
Client này được dùng chung cho tất cả các cuộc gọi do huggingface_hub thực hiện. Do đó, bạn không nên đóng nó thủ công.
Sử dụng set_client_factory() để tùy chỉnh httpx2.Client.
Trong một số trường hợp hiếm, bạn có thể muốn đóng thủ công phiên hiện tại (ví dụ, sau một SSLError tạm thời). Bạn có thể thực hiện điều này bằng close_session(). Một phiên mới sẽ được tạo tự động ở lần gọi tiếp theo của get_session().
Các phiên luôn được đóng tự động khi tiến trình thoát.
Đóng httpx2.Client toàn cục được sử dụng bởi huggingface_hub.
Nếu một Client bị đóng, nó sẽ được tạo lại vào lần gọi tiếp theo của get_session().
Có thể hữu ích nếu, ví dụ, chứng chỉ SSL đã được cập nhật.
Đối với mã bất đồng bộ, hãy sử dụng set_async_client_factory() để cấu hình một httpx2.AsyncClient và get_async_session() để lấy một phiên.
Đặt nhà máy client HTTP async sẽ được sử dụng bởi huggingface_hub.
Nhà máy client bất đồng bộ là một phương thức trả về một đối tượng httpx2.AsyncClient.
Điều này có thể hữu ích nếu bạn đang chạy các script trong một môi trường cụ thể yêu cầu cấu hình tùy chỉnh (ví dụ: proxy hoặc chứng chỉ tùy chỉnh).
Sử dụng get_async_session() để lấy một httpx2.AsyncClient được cấu hình chính xác.
Ngược lại với
httpx2.Clientđược dùng chung cho tất cả các cuộc gọi dohuggingface_hubthực hiện,httpx2.AsyncClientkhông được dùng chung. Khuyến nghị sử dụng async context manager để đảm bảo client được đóng đúng cách khi thoát khỏi ngữ cảnh.
Trả về một đối tượng httpx2.AsyncClient, sử dụng nhà máy transport từ người dùng.
Sử dụng set_async_client_factory() để tùy chỉnh httpx2.AsyncClient.
Ngược lại với
httpx2.Clientđược dùng chung cho tất cả các cuộc gọi dohuggingface_hubthực hiện,httpx2.AsyncClientkhông được dùng chung. Khuyến nghị sử dụng async context manager để đảm bảo client được đóng đúng cách khi thoát khỏi ngữ cảnh.
Khác với client đồng bộ, vòng đời của client bất đồng bộ không được quản lý tự động. Hãy sử dụng async context manager để xử lý nó một cách phù hợp.
Mô-đun httpx
huggingface_hub xuất lại thư viện HTTP mà nó sử dụng bên trong dưới tên huggingface_hub.utils.httpx:
from huggingface_hub.utils import httpx
try:
...
except httpx.HTTPError:
...Điều này chủ yếu hữu ích cho các thư viện bên thứ ba được xây dựng dựa trên huggingface_hub. huggingface_hub v1.x được xây dựng trên httpx, trong khi v2.x được xây dựng trên httpx2 (phiên bản kế nhiệm, được phân phối dưới dạng một gói riêng biệt). Việc import module từ huggingface_hub.utils thay vì import trực tiếp httpx có nghĩa là bạn luôn nhận được phiên bản mà huggingface_hub thực sự đang sử dụng, và thư viện của bạn vẫn tương thích với cả hai phiên bản chính. Xem vấn đề này để biết thêm chi tiết về kế hoạch chuyển đổi.
Chỉ sử dụng điều này khi bạn cần các kiểu hoặc ngoại lệ của
httpx(ví dụ: để bắt lỗi). Để thực hiện các yêu cầu đến Hub, hãy sử dụng get_session() như đã mô tả ở trên.
Xử lý lỗi HTTP
huggingface_hub định nghĩa các lỗi HTTP riêng để bổ sung thông tin chi tiết cho HTTPError được ném ra bởi httpx2, dựa trên thông tin phản hồi từ máy chủ.
Nâng cho trạng thái
hf_raise_for_status() được thiết kế là phương thức trung tâm để “raise for status” từ bất kỳ yêu cầu nào được gửi đến Hub. Nó bọc httpx2.Response.raise_for_status cơ bản để cung cấp thêm thông tin. Mọi HTTPError được ném ra sẽ được chuyển đổi thành HfHubHTTPError.
from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError
response = get_session().post(...)
try:
hf_raise_for_status(response)
except HfHubHTTPError as e:
print(str(e)) # formatted message
e.request_id, e.server_message # details returned by server
# Complete the error message with additional information once it's raised
e.append_to_message("\n`create_commit` expects the repository to exist.")
raisehuggingface_hub.hf_raise_for_status
< source >( response: Responseendpoint_name: str | None = None )
Phiên bản nội bộ của response.raise_for_status() sẽ tinh chỉnh một HTTPError tiềm năng.
Ngoại lệ được ném ra sẽ là một instance của HfHubHTTPError.
Trợ lý này được thiết kế để là phương thức duy nhất để gọi raise_for_status khi thực hiện một cuộc gọi đến Hugging Face Hub.
Gây ra khi yêu cầu thất bại:
- RepositoryNotFoundError Nếu không tìm thấy kho cần tải xuống. Điều này có thể do kho không tồn tại, do
repo_typekhông được đặt đúng, hoặc do kho làprivatevà bạn không có quyền truy cập.- GatedRepoError Nếu kho dữ liệu tồn tại nhưng được bảo vệ và người dùng không có trong danh sách được cấp quyền.
- RevisionNotFoundError Nếu kho chứa tồn tại nhưng không tìm thấy phiên bản.
- EntryNotFoundError Nếu kho dữ liệu tồn tại nhưng mục (ví dụ: tệp được yêu cầu) không thể tìm thấy.
- BadRequestError Nếu yêu cầu thất bại với lỗi HTTP 400 BadRequest.
- HfHubHTTPError Nếu yêu cầu thất bại vì một lý do không được liệt kê ở trên.
Kiểm tra chế độ ngoại tuyến
Bạn có thể kiểm tra theo chương trình xem chế độ ngoại tuyến có được bật hay không bằng cách sử dụng is_offline_mode. Chế độ ngoại tuyến được bật bằng cách đặt HF_HUB_OFFLINE=1 dưới dạng biến môi trường.
Trả về trạng thái chúng ta có đang ở chế độ ngoại tuyến cho Hub hay không.
Khi chế độ ngoại tuyến được bật, tất cả các yêu cầu HTTP được thực hiện bằng get_session sẽ gây ra ngoại lệ OfflineModeIsEnabled.
Lỗi HTTP
Dưới đây là danh sách các lỗi HTTP được ném ra trong huggingface_hub.
HfHubHTTPError
HfHubHTTPError là lớp cha của mọi lỗi HTTP trên HF Hub. Lớp này chịu trách nhiệm phân tích phản hồi từ máy chủ và định dạng thông báo lỗi để cung cấp cho người dùng nhiều thông tin nhất có thể.
lớp huggingface_hub.errors.HfHubHTTPError
< source >( message: strresponse: Responseserver_message: str | None = None )
HTTPError để kế thừa cho bất kỳ lỗi HTTP tùy chỉnh nào được ném ra trong HF Hub.
Mọi HTTPError đều được chuyển đổi thành ít nhất là HfHubHTTPError. Nếu máy chủ gửi lại một số thông tin, chúng sẽ được thêm vào thông báo lỗi.
Chi tiết đã thêm:
- Request ID được lấy từ các header theo thứ tự ưu tiên: “X-Request-Id”, “X-Amzn-Trace-Id”, “X-Amz-Cf-Id”.
- Thông báo lỗi máy chủ từ tiêu đề “X-Error-Message”.
- Thông báo lỗi máy chủ nếu chúng tôi tìm thấy một thông báo trong phần thân phản hồi.
Ví dụ:
import httpx2
from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError
response = get_session().post(...)
try:
hf_raise_for_status(response)
except HfHubHTTPError as e:
print(str(e)) # formatted message
e.request_id, e.server_message # details returned by server
# Complete the error message with additional information once it's raised
e.append_to_message("
ate_commit` expects the repository to exist.")
raiseThêm thông tin bổ sung vào thông điệp ban đầu của HfHubHTTPError.
RepositoryNotFoundError
lớp huggingface_hub.errors.RepositoryNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
Được ném ra khi cố gắng truy cập một URL hf.co với tên kho không hợp lệ, hoặc với tên kho riêng tư mà người dùng không có quyền truy cập.
Ví dụ:
>>> from huggingface_hub import model_info
>>> model_info("<non_existent_repository>")
(...)
huggingface_hub.errors.RepositoryNotFoundError: 401 Client Error. (Request ID: PvMw_VjBMjVdMz53WKIzP)
Repository Not Found for url: https://huggingface.co/api/models/%3Cnon_existent_repository%3E.
Please make sure you specified the correct `repo_id` and `repo_type`.
If the repo is private, make sure you are authenticated and your token has the required permissions.
Invalid username or password.GatedRepoError
lớp huggingface_hub.errors.GatedRepoError
< source >( message: strresponse: Responseserver_message: str | None = None )
Được ném ra khi cố gắng truy cập một kho lưu trữ có kiểm soát mà người dùng không có trong danh sách được ủy quyền.
Lưu ý: kế thừa từ RepositoryNotFoundError để đảm bảo tính tương thích ngược.
Ví dụ:
>>> from huggingface_hub import model_info
>>> model_info("<gated_repository>")
(...)
huggingface_hub.errors.GatedRepoError: 403 Client Error. (Request ID: ViT1Bf7O_026LGSQuVqfa)
Cannot access gated repo for url https://huggingface.co/api/models/ardent-figment/gated-model.
Access to model ardent-figment/gated-model is restricted and you are not in the authorized list.
Visit https://huggingface.co/ardent-figment/gated-model to ask for access.RevisionNotFoundError
lớp huggingface_hub.errors.RevisionNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
Được ném ra khi cố gắng truy cập một URL hf.co có kho lưu trữ hợp lệ nhưng phiên bản không hợp lệ.
Ví dụ:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', 'config.json', revision='<non-existent-revision>')
(...)
huggingface_hub.errors.RevisionNotFoundError: 404 Client Error. (Request ID: Mwhe_c3Kt650GcdKEFomX)
Revision Not Found for url: https://huggingface.co/bert-base-cased/resolve/%3Cnon-existent-revision%3E/config.json.RevisionResolutionError
Được HfApi.resolve_revision() ném ra khi một revision không thể được phân giải thành một commit hash: không thể kết nối đến Hub (chế độ ngoại tuyến, lỗi kết nối, hết thời gian chờ, Hub đang ngừng hoạt động, …) và không tìm thấy mục phù hợp nào trong bộ nhớ đệm cục bộ.
BadRequestError
lớp huggingface_hub.errors.BadRequestError
< source >( message: strresponse: Responseserver_message: str | None = None )
Được hf_raise_for_status ném ra khi máy chủ trả về lỗi HTTP 400.
EntryNotFoundError
Được ném ra khi không tìm thấy mục, cả ở cục bộ lẫn từ xa.
Ví dụ:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.RemoteEntryNotFoundError (...)
>>> hf_hub_download('bert-base-cased', '<non-existent-file>', local_files_only=True)
(...)
huggingface_hub.utils.errors.LocalEntryNotFoundError (...)RemoteEntryNotFoundError
lớp huggingface_hub.errors.RemoteEntryNotFoundError
< source >( message: strresponse: Responseserver_message: str | None = None )
Được ném ra khi cố gắng truy cập một URL hf.co có kho lưu trữ và phiên bản hợp lệ nhưng tên tệp không hợp lệ.
Ví dụ:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.EntryNotFoundError: 404 Client Error. (Request ID: 53pNl6M0MxsnG5Sw8JA6x)
Entry Not Found for url: https://huggingface.co/bert-base-cased/resolve/main/%3Cnon-existent-file%3E.LocalEntryNotFoundError
Được ném ra khi cố gắng truy cập một tệp hoặc snapshot không có trên đĩa khi mạng bị tắt hoặc không khả dụng (vấn đề kết nối). Mục có thể tồn tại trên Hub.
Ví dụ:
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-cached-file>', local_files_only=True)
(...)
huggingface_hub.errors.LocalEntryNotFoundError: Cannot find the requested files in the disk cache and outgoing traffic has been disabled. To enable hf.co look-ups and downloads online, set 'local_files_only' to False.IncompleteSnapshotError
Được snapshot_download() ném ra khi không thể kết nối đến Hub (trạng thái ngoại tuyến, sự cố kết nối, hoặc local_files_only=True) và bản sao lưu (snapshot) được lưu trong bộ nhớ đệm (cache) được biết là không đầy đủ: một số tệp được liệt kê trong danh sách cây (tree listing) đã được lưu trong bộ nhớ đệm của kho (repository) bị thiếu trong bản sao lưu cục bộ.
Đây là một lớp con của LocalEntryNotFoundError để đảm bảo tính tương thích ngược.
Thuộc tính snapshot_path chứa đường dẫn đến bản snapshot cục bộ chưa hoàn chỉnh, nhờ đó thư viện phía sau có thể xác định vị trí các tệp được cache mới nhất mặc dù chúng được biết là chưa hoàn chỉnh.
CachedRepoTreeNotFoundError
Được get_cached_repo_tree() ném ra khi không có danh sách cây nào được lưu cache cho phiên bản được yêu cầu.
Danh sách cây được điền như một tác dụng phụ của snapshot_download().
OfflineModeIsEnabled
Được ném ra khi một yêu cầu được thực hiện nhưng biến môi trường HF_HUB_OFFLINE=1 đã được đặt.
Telemetry
huggingface_hub bao gồm một hàm trợ giúp để gửi dữ liệu telemetry. Thông tin này giúp chúng tôi gỡ lỗi và ưu tiên phát triển các tính năng mới.
Người dùng có thể tắt việc thu thập telemetry bất cứ lúc nào bằng cách đặt biến môi trường HF_HUB_DISABLE_TELEMETRY=1.
Telemetry cũng bị tắt ở chế độ ngoại tuyến (tức là khi đặt HF_HUB_OFFLINE=1).
Nếu bạn là người duy trì một thư viện bên thứ ba, việc gửi dữ liệu telemetry đơn giản chỉ là thực hiện một cuộc gọi đến send_telemetry.
Dữ liệu được gửi trên một thread riêng biệt nhằm giảm thiểu tối đa tác động đến người dùng.
huggingface_hub.utils.send_telemetry
< source >( topic: strlibrary_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = None )
Tham số
- topic (
str) — Tên của chủ đề được theo dõi. Chủ đề được sử dụng trực tiếp để xây dựng URL. Nếu bạn muốn theo dõi các chủ đề con, chỉ cần sử dụng ký tự “/” để phân tách. Ví dụ: “gradio”, “transformers/examples”,… - library_name (
str, tùy chọn) — Tên của thư viện đang thực hiện yêu cầu HTTP. Giá trị này sẽ được thêm vào tiêu đề user-agent. - library_version (
str, tùy chọn) — Phiên bản của thư viện đang thực hiện yêu cầu HTTP. Giá trị này sẽ được thêm vào tiêu đề user-agent. - user_agent (
str,dict, tùy chọn) — Thông tin user agent dưới dạng một từ điển hoặc một chuỗi duy nhất. Nó sẽ được bổ sung thông tin về các gói đã cài đặt.
Gửi dữ liệu đo lường giúp theo dõi việc sử dụng các thư viện HF khác nhau.
Dữ liệu sử dụng này giúp chúng tôi gỡ lỗi và ưu tiên phát triển các tính năng mới. Tuy nhiên, chúng tôi hiểu rằng không phải ai cũng muốn chia sẻ thêm thông tin và chúng tôi tôn trọng quyền riêng tư của bạn. Bạn có thể tắt việc thu thập dữ liệu đo lường bằng cách đặt biến môi trường HF_HUB_DISABLE_TELEMETRY=1. Dữ liệu đo lường cũng bị tắt ở chế độ ngoại tuyến (tức là khi đặt HF_HUB_OFFLINE=1).
Việc thu thập dữ liệu đo lường được thực hiện trong một luồng riêng biệt để giảm thiểu tác động đến người dùng.
Ví dụ:
>>> from huggingface_hub.utils import send_telemetry
# Send telemetry without library information
>>> send_telemetry("ping")
# Send telemetry to subtopic with library information
>>> send_telemetry("gradio/local_link", library_name="gradio", library_version="3.22.1")
# Send telemetry with additional data
>>> send_telemetry(
... topic="examples",
... library_name="transformers",
... library_version="4.26.0",
... user_agent={"pipeline": "text_classification", "framework": "flax"},
... )Validators
huggingface_hub bao gồm các bộ xác thực tùy chỉnh để tự động xác thực các đối số của phương thức.
Việc xác thực được lấy cảm hứng từ công việc trong Pydantic để xác thực các chú thích kiểu dữ liệu, nhưng với các tính năng hạn chế hơn.
Trình trang trí tổng quát
validate_hf_hub_args() là một decorator tổng quát để bao bọc các phương thức có các tham số tuân theo quy tắc đặt tên của huggingface_hub. Mặc định, tất cả các tham số có validator được triển khai sẽ được kiểm tra.
Nếu một giá trị đầu vào không hợp lệ, một HFValidationError sẽ được ném ra. Chỉ giá trị không hợp lệ đầu tiên mới gây ra lỗi và dừng quá trình kiểm tra hợp lệ.
Cách sử dụng:
>>> from huggingface_hub.utils import validate_hf_hub_args
>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
... print(repo_id)
>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id
>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.validate_hf_hub_args
huggingface_hub.utils.validate_hf_hub_args
< source >( fn: ~CallableT )
Gây ra
- HFValidationError — Nếu đầu vào không hợp lệ.
Xác thực các giá trị nhận được dưới dạng tham số cho bất kỳ phương thức công khai nào của huggingface_hub.
Mục tiêu của decorator này là thống nhất việc kiểm tra tính hợp lệ của các đối số được tái sử dụng ở mọi nơi. Mặc định, tất cả các bộ kiểm tra đã định nghĩa đều được chạy thử.
Trình xác thực:
- validate_repo_id():
repo_idphải là"repo_name"hoặc"namespace/repo_name". Namespace là tên người dùng hoặc một tổ chức. ~utils.smoothly_deprecate_legacy_arguments: Bỏ quaproxieskhi tải tệp (nên được đặt ở phạm vi toàn cục).
Ví dụ:
>>> from huggingface_hub.utils import validate_hf_hub_args
>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
... print(repo_id)
>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id
>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.HFValidationError
Ngoại lệ chung được ném ra bởi các trình xác thực của huggingface_hub.
Kế thừa từ ValueError.
Trình xác thực đối số
Validators cũng có thể được sử dụng riêng lẻ. Dưới đây là danh sách tất cả các đối số có thể được kiểm tra.
repo_id
Kiểm tra xem repo_id có hợp lệ không.
Điều này không nhằm thay thế cho việc kiểm tra hợp lệ được thực hiện trên Hub mà thay vào đó là để tránh các mâu thuẫn cục bộ bất cứ khi nào có thể (ví dụ: truyền repo_type trong repo_id là bị cấm).
Quy tắc:
- Từ 1 đến 96 ký tự.
- “repo_name” hoặc “namespace/repo_name”
- [a-zA-Z0-9] hoặc ”-”, ”_”, ”.”
- “—” và “..” bị cấm
Hợp lệ: "foo", "foo/bar", "123", "Foo-BAR_foo.bar123"
Không hợp lệ: "datasets/foo/bar", ".repo_id", "foo--bar", "foo.git"
Ví dụ:
>>> from huggingface_hub.utils import validate_repo_id
>>> validate_repo_id(repo_id="valid_repo_id")
>>> validate_repo_id(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.Được thảo luận tại https://github.com/huggingface/huggingface_hub/issues/1008. Trong moon-landing (kho nội bộ):
smoothly_deprecate_legacy_arguments
Không hoàn toàn là một trình xác thực, nhưng vẫn chạy tốt.
huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments
< source >( fn_name: strkwargs: dict )
Loại bỏ dần các đối số cũ trong mã nguồn huggingface_hub một cách suôn sẻ.
Hàm này bỏ qua một số đối số đã bị ngừng hỗ trợ trong kwargs và cảnh báo người dùng rằng chúng đã bị bỏ qua. Mục tiêu là tránh làm hỏng mã hiện có trong khi hướng dẫn người dùng sử dụng cách làm mới.
Danh sách các đối số đã bị ngừng hỗ trợ:
proxies: Để thiết lập proxy, người dùng phải sử dụng biến môi trường HTTP_PROXY hoặc cấu hìnhhttpx2.Clientthủ công bằng cách sử dụng hàm set_client_factory().Trong huggingface_hub 0.x,
proxieslà một từ điển được truyền trực tiếp vàorequests.request. Kể từ huggingface_hub 1.x,proxiescho từng yêu cầu không còn được hỗ trợ nữa. Cụ thể, không thể cấu hình proxy ở cấp độ từng yêu cầu. Giải pháp là cấu hình toàn cục bằng cách sử dụng hàm set_client_factory() hoặc biến môi trường HTTP_PROXY.Để biết thêm chi tiết, xem:
resume_download: đã bị loại bỏ mà không có thay thế.huggingface_hubluôn tiếp tục tải xuống bất cứ khi nào có thể.force_filename: đã bị loại bỏ mà không có thay thế. Tên tệp luôn giống như trên Hub.local_dir_use_symlinks: đã bị loại bỏ mà không có thay thế. Việc tải xuống thư mục cục bộ không còn sử dụng liên kết mềm (symlinks) nữa.