Hub documentation

Các mô hình có cổng

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Các mô hình có cổng

Để cung cấp nhiều quyền kiểm soát hơn về cách các mô hình được sử dụng, Hub cho phép tác giả mô hình bật yêu cầu truy cập cho mô hình của họ. Khi được bật, người dùng phải gửi yêu cầu truy cập để truy cập các tệp mô hình, điều này sẽ chia sẻ thông tin Hugging Face của họ (tên người dùng và địa chỉ email) với các tác giả mô hình, trừ khi các tác giả đã chọn không thu thập thông tin này. Tác giả mô hình cũng có thể thêm các trường tùy chỉnh. Một mô hình có bật yêu cầu truy cập được gọi là mô hình có cổng. Các yêu cầu truy cập luôn được cấp cho từng người dùng cá nhân thay vì cho toàn bộ tổ chức. Một trường hợp sử dụng phổ biến của các mô hình có cổng là cung cấp quyền truy cập vào các mô hình nghiên cứu ban đầu trước khi phát hành rộng rãi.

Quản lý các mô hình có kiểm soát với tư cách là tác giả mô hình

Để bật yêu cầu truy cập, hãy chuyển đến trang cài đặt mô hình. Mặc định, mô hình không được bảo vệ. Nhấp vào Enable Access request ở góc trên bên phải.

Mặc định, quyền truy cập vào mô hình được tự động cấp cho người dùng khi họ yêu cầu. Điều này được gọi là duyệt tự động. Ở chế độ này, bất kỳ người dùng nào cũng có thể truy cập mô hình của bạn sau khi họ đã chia sẻ thông tin cá nhân với bạn.

Nếu bạn muốn tự động phê duyệt người dùng nào có thể truy cập mô hình của mình, bạn phải đặt nó thành manual approval. Khi đó, bạn sẽ thấy nhiều tùy chọn hơn:

  • Thêm quyền truy cập cho phép bạn tìm kiếm một người dùng và cấp quyền truy cập cho họ ngay cả khi họ chưa yêu cầu.
  • Tần suất thông báo cho phép bạn cấu hình thời điểm nhận thông báo khi có người dùng mới yêu cầu quyền truy cập. Bạn có thể đặt là một lần mỗi ngày hoặc theo thời gian thực. Mặc định, một email sẽ được gửi đến địa chỉ email chính của bạn. Đối với các model được lưu trữ dưới một tổ chức, email mặc định sẽ được gửi đến 5 quản trị viên đầu tiên của tổ chức đó. Trong cả hai trường hợp (người dùng hoặc tổ chức), bạn có thể đặt một địa chỉ email khác trong trường Email thông báo.

Xem xét các yêu cầu truy cập

Khi các yêu cầu truy cập được bật, bạn có toàn quyền kiểm soát ai có thể truy cập mô hình của mình hay không, bất kể chế độ phê duyệt là thủ công hay tự động. Bạn có thể xem xét và quản lý các yêu cầu từ giao diện người dùng hoặc qua API.

Từ giao diện người dùng

Bạn có thể xem ai có quyền truy cập vào model được bảo vệ của mình từ trang cài đặt của model bằng cách nhấp vào nút Review access requests. Thao tác này sẽ mở một hộp thoại chứa 3 danh sách người dùng:

  • pending: danh sách người dùng đang chờ được phê duyệt để truy cập mô hình của bạn. Danh sách này trống trừ khi bạn đã chọn manual approval. Bạn có thể Accept hoặc Reject yêu cầu. Nếu yêu cầu bị từ chối, người dùng sẽ không thể truy cập mô hình của bạn và cũng không thể yêu cầu truy cập lại.
  • accepted: danh sách đầy đủ các người dùng có quyền truy cập vào model của bạn. Bạn có thể Reject quyền truy cập vào bất kỳ lúc nào cho bất kỳ người dùng nào, bất kể chế độ phê duyệt là thủ công hay tự động. Bạn cũng có thể Cancel việc phê duyệt, điều này sẽ chuyển người dùng sang danh sách pending.
  • rejected: danh sách người dùng mà bạn đã từ chối thủ công. Những người dùng này không thể truy cập các model của bạn. Nếu họ truy cập kho model của bạn, họ sẽ thấy thông báo Your request to access this repo has been rejected by the repo’s authors.

Thông qua API

Bạn có thể tự động hóa việc phê duyệt các yêu cầu truy cập bằng cách sử dụng API. Bạn phải truyền một token có quyền write cho kho có kiểm soát. Để tạo token, hãy truy cập cài đặt người dùng của bạn.

Phương phápURIMô tảTiêu đềPayload
GET/api/models/{repo_id}/user-access-request/{status}Liệt kê các yêu cầu có status được chỉ định: pending, accepted, rejected hoặc reset. Mỗi yêu cầu có một requestId, và một user nếu tên người dùng đã được thu thập.{"authorization": "Bearer $token"}
POST/api/models/{repo_id}/user-access-request/handleThay đổi trạng thái của một yêu cầu truy cập nhất định thành status.{"authorization": "Bearer $token"}{"status": "accepted"/"rejected"/"pending"/"reset", "user": "username" (or "requestId": "request id"), "rejectionReason": "Optional rejection reason that will be visible to the user (max 200 characters).", "resetReason": "Optional reset reason that will be included in the email sent to the user (max 200 characters)."}
POST/api/models/{repo_id}/user-access-request/grantCho phép một người dùng cụ thể truy cập kho của bạn.{"authorization": "Bearer $token"}{"user": "username"}

URL gốc cho các điểm cuối HTTP ở trên là https://huggingface.co.

Đặt yêu cầu thành reset sẽ thu hồi quyết định trước đó và yêu cầu người dùng bắt đầu lại: họ mất quyền truy cập vào mô hình, nhận được email thông báo rằng yêu cầu của họ đã được đặt lại (bao gồm resetReason tùy chọn), và sẽ được nhắc lại để đồng ý với các điều khoản kiểm soát và gửi một yêu cầu mới vào lần tiếp theo họ truy cập trang mô hình. Điều này khác với pending, vốn giữ nguyên yêu cầu hiện có và chỉ đưa nó trở lại hàng đợi xem xét, và khác với rejected, vốn chặn người dùng khỏi việc yêu cầu quyền truy cập một lần nữa.

MỚI! Các endpoint này hiện đã được hỗ trợ chính thức trong client Python huggingface_hub của chúng tôi. Liệt kê các yêu cầu truy cập đến model của bạn bằng list_pending_access_requests, list_accepted_access_requests và list_rejected_access_requests. Bạn cũng có thể chấp nhận, hủy và từ chối các yêu cầu truy cập bằng accept_access_request, cancel_access_request, reject_access_request. Cuối cùng, bạn có thể cấp quyền truy cập cho một người dùng bằng grant_access.

Tải báo cáo truy cập

Bạn có thể tải xuống báo cáo về tất cả các yêu cầu truy cập cho một model được bảo vệ bằng nút download user access report. Nhấp vào nút đó để tải xuống một tệp json chứa danh sách người dùng. Với mỗi mục, bạn có:

  • requestId: id của yêu cầu.
  • user: id của người dùng. Ví dụ: julien-c.
  • fullname: tên của người dùng trên Hub. Ví dụ: Julien Chaumond.
  • status: trạng thái của yêu cầu. Là "pending", "accepted", "rejected" hoặc "reset".
  • email: email của người dùng.
  • time: thời điểm người dùng ban đầu thực hiện yêu cầu.
  • reviewedAt: thời gian (datetime) khi yêu cầu được chấp nhận hoặc từ chối. Không được đặt cho các yêu cầu đang chờ xử lý.

user, fullname và email chỉ có mặt nếu bạn đã chọn thu thập chúng khi yêu cầu được thực hiện. Các yêu cầu luôn có thể được xác định bằng requestId của chúng.

Chọn dữ liệu hồ sơ nào mà Hugging Face chia sẻ với bạn

Mặc định, Hugging Face chia sẻ tên người dùng và địa chỉ email chính của người yêu cầu với bạn. Bạn chịu trách nhiệm xử lý bất kỳ thông tin định danh cá nhân (PII) nào và công bố cách bạn xử lý thông tin đó theo các luật áp dụng (ví dụ bằng cách liên kết đến Chính sách Quyền riêng tư của bạn). Bạn có thể thay đổi điều này trong các tùy chọn gating trên trang cài đặt mô hình:

  • Thu thập tên người dùng: khi bỏ chọn, bạn sẽ không nhận được tên người dùng Hugging Face, họ tên đầy đủ và ảnh đại diện của người yêu cầu. Các yêu cầu được liệt kê với một id yêu cầu và có thể được chấp nhận hoặc từ chối như bất kỳ yêu cầu nào khác.
  • Thu thập email: thu thập email hồ sơ Hugging Face của người yêu cầu. Yêu cầu Thu thập tên người dùng.

Bạn vẫn nhận được câu trả lời cho các trường biểu mẫu tùy chỉnh của mình, vì vậy bạn có thể yêu cầu bất kỳ thông tin liên hệ nào cần thiết ở đó. Các cài đặt này chỉ áp dụng cho các yêu cầu mới: các yêu cầu hiện có sẽ giữ nguyên cài đặt đã được thiết lập tại thời điểm chúng được tạo.

Đối với các mô hình trong một Gating Group Collection, các tùy chọn này được cấu hình trên bộ sưu tập thay vì trên từng mô hình.

Tùy chỉnh thông tin được yêu cầu

Mặc định, người dùng truy cập vào model được bảo vệ của bạn sẽ được yêu cầu chia sẻ thông tin Hugging Face của họ (email và tên người dùng, trừ khi bạn đã tắt việc thu thập) bằng cách nhấp vào nút Agree and send request to access repo.

Nếu bạn muốn thu thập thêm thông tin người dùng, bạn có thể cấu hình các trường bổ sung. Thông tin này sẽ có thể truy cập từ tab Cài đặt. Để thực hiện, hãy thêm thuộc tính extra_gated_fields vào metadata thẻ mô hình của bạn, chứa một danh sách các cặp khóa/giá trị. Khóa là tên của trường và giá trị là kiểu của nó hoặc một đối tượng có trường type. Danh sách các kiểu trường là:

  • text: một trường văn bản một dòng.
  • checkbox: một trường hộp kiểm.
  • date_picker: một trường chọn ngày.
  • country: một menu thả xuống để chọn quốc gia. Danh sách các quốc gia dựa trên tiêu chuẩn ISO 3166-1 alpha-2.
  • select: một menu thả xuống với danh sách các tùy chọn. Danh sách các tùy chọn được định nghĩa trong trường options. Ví dụ: options: ["option 1", "option 2", {label: "option3", value: "opt3"}].

Cuối cùng, bạn cũng có thể cá nhân hóa thông điệp hiển thị cho người dùng bằng trường bổ sung extra_gated_prompt.

Dưới đây là một ví dụ về biểu mẫu yêu cầu tùy chỉnh, trong đó người dùng được yêu cầu cung cấp tên công ty và quốc gia, đồng thời xác nhận rằng mô hình chỉ được sử dụng cho mục đích phi thương mại.

---
extra_gated_prompt: "You agree to not use the model to conduct experiments that cause harm to human subjects."
extra_gated_fields:
  Company: text
  Country: country
  Specific date: date_picker
  I want to use this model for:
    type: select
    options: 
      - Research
      - Education
      - label: Other
        value: other
  I agree to use this model for non-commercial use ONLY: checkbox
---

Trong một số trường hợp, bạn có thể muốn chỉnh sửa văn bản mặc định trong tiêu đề, mô tả và nút của cổng. Đối với các trường hợp sử dụng đó, bạn có thể chỉnh sửa extra_gated_heading, extra_gated_description và extra_gated_button_content như sau:

---
extra_gated_heading: "Acknowledge license to accept the repository"
extra_gated_description: "Our team may take 2-3 days to process your request"
extra_gated_button_content: "Acknowledge license"
---

Các trường hợp sử dụng ví dụ về việc quản lý các yêu cầu truy cập theo cách lập trình

Dưới đây là một số trường hợp sử dụng thú vị để quản lý các yêu cầu truy cập cho các kho có kiểm soát (gated repos) một cách tự động hóa, được cộng đồng tự phát triển. Nhắc lại rằng, kho mô hình cần được đặt ở chế độ phê duyệt thủ công, nếu không người dùng sẽ được cấp quyền truy cập vào đó một cách tự động.

Các trường hợp sử dụng có thể của việc quản lý bằng chương trình bao gồm:

  • Nếu bạn có yêu cầu sàng lọc người dùng nâng cao (cho các yêu cầu tuân thủ nâng cao, v.v.) hoặc bạn muốn xử lý các yêu cầu của người dùng bên ngoài Hub.
    • Một ví dụ cho điều này là bản phát hành ban đầu của Llama 2 từ Meta, trong đó người dùng phải yêu cầu quyền truy cập trên trang web của Meta.
    • Bạn có thể yêu cầu người dùng cung cấp tên người dùng HF của họ trong quy trình cấp quyền truy cập, sau đó sử dụng một script để tự động chấp nhận các yêu cầu của người dùng trên Hub dựa trên bộ điều kiện do bạn thiết lập.
  • Nếu bạn muốn điều kiện hóa quyền truy cập vào một mô hình dựa trên việc hoàn tất quy trình thanh toán (lưu ý rằng quy trình thanh toán thực tế diễn ra bên ngoài Hub).

Kiểm soát quyền truy cập cho thành viên tổ chức

Đối với các mô hình có kiểm soát truy cập được lưu trữ dưới một tổ chức, bạn cũng có thể yêu cầu chính các thành viên của tổ chức đó phải gửi yêu cầu cấp quyền truy cập. Trên trang cài đặt mô hình, trong các tùy chọn kiểm soát truy cập, hãy bật Cũng kiểm soát truy cập cho các thành viên của {org}.

Khi tùy chọn này được bật, thành viên tổ chức phải yêu cầu quyền truy cập vào mô hình như bất kỳ người dùng nào khác. Các vai trò sau đây bỏ qua yêu cầu và giữ quyền truy cập trực tiếp:

  • Quản trị viên tổ chức
  • Người dùng đã tạo kho
  • quản trị viên Nhóm Tài nguyên, khi mô hình thuộc về một Nhóm Tài nguyên

Tất cả các thành viên khác phải trải qua quy trình yêu cầu truy cập. Điều này bao gồm các thành viên có vai trò tổ chức là read, contributor hoặc write, và các thành viên của Resource Group không có vai trò admin.

Quản lý các mô hình có kiểm soát với tư cách là một tổ chức (Team & Enterprise)

Team & Enterprise subscribers có thể tạo một Gating Group Collection để cấp (hoặc từ chối) quyền truy cập vào tất cả các model và dataset trong một collection cùng lúc.

Thông tin chi tiết hơn về Gating Group Collections có thể được tìm thấy trong tài liệu chuyên biệt của chúng tôi.

Truy cập các mô hình có kiểm soát với tư cách là người dùng

Với tư cách là người dùng, nếu bạn muốn sử dụng một model có kiểm soát truy cập, bạn sẽ cần yêu cầu quyền truy cập vào model đó. Điều này có nghĩa là bạn phải đã đăng nhập vào tài khoản người dùng Hugging Face.

Việc yêu cầu quyền truy cập chỉ có thể thực hiện từ trình duyệt của bạn. Hãy truy cập mô hình trên Hub và bạn sẽ được yêu cầu chia sẻ thông tin của mình:

Bằng cách nhấp vào Agree, bạn đồng ý chia sẻ thông tin bạn nhập vào biểu mẫu yêu cầu (nếu có) với các tác giả của model, cũng như tên người dùng và địa chỉ email Hugging Face của bạn nếu các tác giả chọn thu thập chúng. Để hỗ trợ các tác giả model quyết định có cấp quyền truy cập cho bạn hay không, hãy cố gắng điền đầy đủ nhất có thể vào các trường trong biểu mẫu.

Sau khi yêu cầu truy cập được gửi đi, có hai khả năng. Nếu cơ chế phê duyệt là tự động, bạn sẽ ngay lập tức có quyền truy cập vào các tệp mô hình. Ngược lại, các yêu cầu phải được các tác giả phê duyệt thủ công, điều này có thể mất nhiều thời gian hơn.

Các tác giả của mô hình có toàn quyền kiểm soát quyền truy cập vào mô hình. Cụ thể, họ có thể quyết định chặn quyền truy cập của bạn vào mô hình vào bất kỳ lúc nào mà không cần thông báo trước, bất kể cơ chế phê duyệt hay yêu cầu của bạn đã được phê duyệt hay chưa.

Tải xuống các tệp

Để tải tệp từ một model có kiểm soát truy cập, bạn cần xác thực. Trong trình duyệt, quá trình này diễn ra tự động miễn là bạn đã đăng nhập bằng tài khoản của mình. Nếu bạn đang sử dụng script, bạn cần cung cấp token người dùng. Trong hệ sinh thái Python của Hugging Face (transformers, diffusers, datasets, v.v.), bạn có thể đăng nhập máy của mình bằng thư viện huggingface_hub và chạy trong terminal:

hf auth login

Ngoài ra, bạn có thể đăng nhập bằng cách lập trình bằng cách sử dụng login() trong notebook hoặc script:

>>> from huggingface_hub import login
>>> login()

Bạn cũng có thể cung cấp tham số token cho hầu hết các phương thức tải trong các thư viện (from_pretrained, hf_hub_download, load_dataset, v.v.), trực tiếp từ các script của bạn.

Để biết thêm chi tiết về cách đăng nhập, hãy xem hướng dẫn đăng nhập.

Hạn chế quyền truy cập cho người dùng EU

Đối với các mô hình có cổng (gated), bạn có thể thêm một lớp kiểm soát truy cập bổ sung để hạn chế cụ thể người dùng từ các quốc gia thuộc Liên minh Châu Âu. Điều này hữu ích nếu giấy phép hoặc điều khoản sử dụng của mô hình của bạn cấm việc phân phối tại EU.

Để bật tính năng này, hãy thêm thuộc tính extra_gated_eu_disallowed: true vào metadata của model card.

Quan trọng: Tính năng này chỉ được kích hoạt nếu mô hình của bạn đã được đặt là có kiểm soát. Nếu gated: false hoặc thuộc tính này không được thiết lập, hạn chế này sẽ không áp dụng.

---
license: mit
gated: true
extra_gated_eu_disallowed: true
---

Hệ thống xác định vị trí của người dùng dựa trên địa chỉ IP của họ.

Update on GitHub