Transformers documentation
Cấu hình
Cấu hình
Lớp cơ sở PreTrainedConfig triển khai các phương thức chung để tải/lưu cấu hình từ một tệp hoặc thư mục cục bộ, hoặc từ cấu hình của một mô hình được huấn luyện trước do thư viện cung cấp (được tải xuống từ kho lưu trữ AWS S3 của HuggingFace).
Mỗi lớp cấu hình dẫn xuất triển khai các thuộc tính cụ thể của mô hình. Các thuộc tính chung có mặt trong tất cả các lớp cấu hình là: hidden_size, num_attention_heads và num_hidden_layers. Các mô hình văn bản còn triển khai thêm: vocab_size.
PreTrainedConfig
lớp transformers.PreTrainedConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None )
Tham số
- name_or_path (
str, tùy chọn, mặc định là"") — Lưu chuỗi được truyền vào PreTrainedModel.from_pretrained() dưới dạngpretrained_model_name_or_pathnếu cấu hình được tạo bằng phương pháp đó. - output_hidden_states (
bool, tùy chọn, mặc định làFalse) — Xác định xem mô hình có nên trả về tất cả các hidden-states hay không. - output_attentions (
bool, tùy chọn, mặc định làFalse) — Xác định xem mô hình có nên trả về tất cả các chú ý (attentions) hay không. - return_dict (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có nên trả về một ModelOutput thay vì một tuple đơn thuần hay không. - is_encoder_decoder (
bool, tùy chọn, mặc định làFalse) — Xác định xem mô hình có được sử dụng như một encoder/decoder hay không. - chunk_size_feed_forward (
int, tùy chọn, mặc định là0) — Kích thước chunk của tất cả các lớp feed forward trong các khối attention residual. Kích thước chunk là0có nghĩa là lớp feed forward không được chia chunk. Kích thước chunk là n có nghĩa là lớp feed forward xử lýn< sequence_length embeddings mỗi lần. Để biết thêm thông tin về việc chia chunk feed forward, xem Feed Forward Chunking hoạt động như thế nào?. - per_layer_config (
dict[int | str, dict[str, Any]], tuỳ chọn) — Một ánh xạ thưa từ chỉ số lớp đến các ghi đè thuộc tính cấu hình. Mỗi khóa là một chỉ số lớp, và mỗi giá trị chứa các thuộc tính khác biệt so với cấu hình toàn cục cho lớp đó. - tie_last_hidden_states (
bool, tùy chọn) — Liệuhidden_states[-1]có nên làlast_hidden_statesau bước chuẩn hóa cuối cùng thay vì trạng thái ẩn trước bước chuẩn hóa cuối cùng hay không. Nếu không được đặt, giá trị mặc định tích hợp sẵn của mô hình sẽ được sử dụng.
Các tham số cho các tác vụ tinh chỉnh
- architectures (
list[str], tùy chọn) — Các kiến trúc mô hình có thể được sử dụng với trọng số mô hình được huấn luyện trước. - id2label (
dict[int, str], tùy chọn) — Bản ánh xạ từ chỉ số (ví dụ chỉ số dự đoán, hoặc chỉ số mục tiêu) sang nhãn. - label2id (
dict[str, int], tùy chọn) — Bản ánh xạ từ nhãn sang chỉ số cho mô hình. - num_labels (
int, tùy chọn) — Số lượng nhãn được sử dụng trong lớp cuối cùng được thêm vào mô hình, thường dùng cho tác vụ phân loại. - problem_type (
str, tùy chọn) — Loại bài toán cho các mô hìnhXxxForSequenceClassification. Có thể là một trong"regression","single_label_classification"hoặc"multi_label_classification".
Các tham số đặc thù của PyTorch
- dtype (
str, tùy chọn) —dtypecủa các trọng số. Thuộc tính này có thể được dùng để khởi tạo mô hình vớidtypekhông mặc định (thường làfloat32) và do đó cho phép phân bổ bộ nhớ lưu trữ tối ưu. Ví dụ, nếu mô hình đã lưu làfloat16, lý tưởng là chúng ta muốn nạp lại nó bằng lượng bộ nhớ tối thiểu cần thiết để nạp các trọng sốfloat16.
Lớp cơ sở cho tất cả các lớp cấu hình. Xử lý một số tham số chung cho cấu hình của tất cả các mô hình cũng như các phương thức để tải/tải xuống/lưu cấu hình.
Tệp cấu hình có thể được tải và lưu vào đĩa. Việc tải tệp cấu hình và sử dụng tệp này để khởi tạo một mô hình không tải trọng số của mô hình. Nó chỉ ảnh hưởng đến cấu hình của mô hình.
Thuộc tính lớp (được ghi đè bởi các lớp kế thừa):
- model_type (
str) — Định danh cho loại mô hình, được serialize vào tệp JSON và được dùng để tạo lại đúng đối tượng trong AutoConfig. - attribute_map (
dict[str, str]) — Một dict ánh xạ tên thuộc tính cụ thể của model sang cách đặt tên chuẩn hóa của các thuộc tính. - base_model_tp_plan (
dict[str, Any]) — Một dict ánh xạ FQN của các sub-module của một base model đến kế hoạch tensor parallel được áp dụng cho sub-module đó khimodel.tensor_parallelđược gọi. - base_model_fsdp_plan (
dict[Any, str]) — Một dict ánh xạ các module con của một base model đến một chiến lược sharding FSDP2 (ví dụ"free_full_weight"/"keep_full_weight"). Các key có thể là đường dẫn module dạng wildcard (ví dụ"layers.*") hoặc các tuple của các đường dẫn (được nhóm vào một cuộc gọifully_shardduy nhất). - base_model_pp_plan (
dict[str, tuple[list[str]]]) — Một dict ánh xạ các child-module của một base model đến một kế hoạch pipeline parallel, cho phép người dùng đặt child-module trên thiết bị phù hợp.
Các thuộc tính chung (có mặt trong tất cả các lớp con):
- vocab_size (
int) — Số lượng token trong bảng từ vựng, đồng thời là chiều đầu tiên của ma trận embeddings (thuộc tính này có thể bị thiếu đối với các mô hình không có chế độ văn bản như ViT). - hidden_size (
int) — Kích thước ẩn của mô hình. - num_attention_heads (
int) — Số lượng đầu chú ý được sử dụng trong các lớp chú ý đa đầu của mô hình. - num_hidden_layers (
int) — Số lượng khối trong mô hình.
Việc đặt các tham số cho việc tạo chuỗi trong cấu hình model đã bị ngừng hỗ trợ. Để đảm bảo tương thích ngược, việc nạp một số tham số vẫn có thể thực hiện được, nhưng nếu cố gắng ghi đè lên chúng sẽ gây ra ngoại lệ — bạn nên đặt chúng trong [~transformers.GenerationConfig]. Xem tài liệu của [~transformers.GenerationConfig] để biết thêm thông tin về từng tham số.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Tham số
- repo_id (
str) — Tên của kho mà bạn muốn đẩy cấu hình của mình đến. Nó nên chứa tên tổ chức của bạn khi đẩy đến một tổ chức cụ thể. - commit_message (
str, tùy chọn) — Thông báo để commit khi đẩy. Mặc định là"Upload config". - commit_description (
str, tùy chọn) — Mô tả của commit sẽ được tạo - private (
bool, optional) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - token (
boolhoặcstr, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue(mặc định), sẽ sử dụng token được tạo ra khi chạyhf auth login(được lưu trong~/.huggingface). - revision (
str, tùy chọn) — Nhánh để đẩy các tệp đã tải lên. - create_pr (
bool, tùy chọn, mặc định làFalse) — Có tạo PR với các tệp đã tải lên hay commit trực tiếp hay không. - max_shard_size (
inthoặcstr, tùy chọn, mặc định là"50GB") — Chỉ áp dụng cho các model. Kích thước tối đa của một checkpoint trước khi được chia shard. Các checkpoint sau khi chia shard sẽ có kích thước nhỏ hơn giá trị này. Nếu được biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ"5MB"). - tags (
list[str], tùy chọn) — Danh sách các thẻ để đẩy lên Hub.
Tải tệp cấu hình lên 🤗 Model Hub.
Ví dụ:
from transformers import AutoConfig
config = AutoConfig.from_pretrained("google-bert/bert-base-cased")
# Push the config to your namespace with the name "my-finetuned-bert".
config.push_to_hub("my-finetuned-bert")
# Push the config to an organization with the name "my-finetuned-bert".
config.push_to_hub("huggingface/my-finetuned-bert")Lấy giá trị mặc định cho từng trường được chú thích trong một dataclass, dùng để lưu diff-dict.
Đối với các config được tạo trong v4 với __init__ tùy chỉnh, nó sẽ trả về
một dict rỗng, do đó lưu tất cả các khóa trong self.__dict__. Đối với config mới hơn, nó sẽ
trả về các khóa có giá trị mặc định được khai báo dưới dạng fields, thay vì trong __post_init__,
điều này chỉ lọc ra các trường cụ thể đó khỏi tệp json được serialize.
Kiểm tra xem từ điển được truyền vào và các từ điển lồng bên trong có chứa khóa dtype hay không, và nếu giá trị không phải là None,
chuyển đổi torch.dtype thành chuỗi chỉ chứa tên kiểu. Ví dụ, torch.float32 sẽ được chuyển đổi thành chuỗi “float32”, sau đó có thể lưu trữ ở định dạng json.
from_dict
< source >( config_dict: dict[str, Any]**kwargs ) → PreTrainedConfig
Tham số
- config_dict (
dict[str, Any]) — Từ điển sẽ được dùng để khởi tạo đối tượng cấu hình. Một từ điển như vậy có thể được lấy từ checkpoint được huấn luyện trước bằng cách sử dụng phương thức get_config_dict(). - kwargs (
dict[str, Any]) — Các tham số bổ sung để khởi tạo đối tượng cấu hình.
Trả về
Đối tượng cấu hình được khởi tạo từ các tham số đó.
Tạo một PreTrainedConfig từ một từ điển Python chứa các tham số.
from_json_file
< source >( json_file: str | os.PathLike ) → PreTrainedConfig
Tham số
Trả về
Đối tượng cấu hình được khởi tạo từ tệp JSON đó.
Tạo một PreTrainedConfig từ đường dẫn đến tệp JSON chứa các tham số.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs ) → PreTrainedConfig
Tham số
- pretrained_model_name_or_path (
strhoặcos.PathLike) — Đây có thể là:- một chuỗi, model id của một cấu hình model được huấn luyện trước được lưu trữ trong một kho model trên huggingface.co.
- đường dẫn đến một thư mục chứa tệp cấu hình được lưu bằng phương thức
save_pretrained(), ví dụ:
./my_model_directory/. - đường dẫn đến tệp JSON cấu hình đã lưu tệp, ví dụ:
./my_model_directory/configuration.json.
- cache_dir (
strhoặcos.PathLike, tùy chọn) — Đường dẫn đến thư mục mà cấu hình mô hình được huấn luyện trước đã tải xuống sẽ được lưu đệm nếu không sử dụng bộ lưu đệm tiêu chuẩn. - force_download (
bool, tùy chọn, mặc định làFalse) — Có nên buộc (tải lại) các tệp cấu hình và ghi đè lên các phiên bản được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không. - proxies (
dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ:{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.Các proxy này được sử dụng cho mỗi yêu cầu. - token (
strhoặcbool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. NếuTrue, hoặc không được chỉ định, sẽ sử dụng token được tạo khi chạyhf auth login(được lưu trong~/.huggingface). - revision (
str, tuỳ chọn, mặc định là"main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên tag hoặc id commit, vì chúng tôi sử dụng hệ thống dựa trên git để lưu trữ mô hình và các artifact khác trên huggingface.co, do đórevisioncó thể là bất kỳ định danh nào được git cho phép.Để kiểm tra một pull request bạn đã tạo trên Hub, bạn có thể truyền
revision="refs/pr/<pr_number>". - return_unused_kwargs (
bool, tùy chọn, mặc định làFalse) — NếuFalse, thì hàm này chỉ trả về đối tượng cấu hình cuối cùng.Nếu
True, thì hàm này trả về mộtTuple(config, unused_kwargs)trong đó unused_kwargs là một từ điển gồm các cặp khóa/giá trị mà khóa của chúng không phải là thuộc tính cấu hình: tức là phần củakwargschưa được sử dụng để cập nhậtconfigvà bị bỏ qua trong mọi trường hợp khác. - subfolder (
str, tùy chọn, mặc định là"") — Trong trường hợp các tệp liên quan nằm trong một thư mục con của kho mô hình trên huggingface.co, bạn có thể chỉ định tên thư mục ở đây. - kwargs (
dict[str, Any], tùy chọn) — Các giá trị trong kwargs của bất kỳ khóa nào là thuộc tính cấu hình sẽ được sử dụng để ghi đè lên các giá trị đã tải. Hành vi đối với các cặp khóa/giá trị mà khóa của chúng không phải là thuộc tính cấu hình được kiểm soát bởi tham số từ khóareturn_unused_kwargs.
Trả về
Đối tượng cấu hình được khởi tạo từ mô hình được huấn luyện trước này.
Tạo một PreTrainedConfig (hoặc một lớp kế thừa) từ cấu hình của một mô hình được huấn luyện trước.
Ví dụ:
# We can't instantiate directly the base class *PreTrainedConfig* so let's show the examples on a
# derived class: BertConfig
config = BertConfig.from_pretrained(
"google-bert/bert-base-uncased"
) # Download configuration from huggingface.co and cache.
config = BertConfig.from_pretrained(
"./test/saved_model/"
) # E.g. config (or model) was saved using *save_pretrained('./test/saved_model/')*
config = BertConfig.from_pretrained("./test/saved_model/my_configuration.json")
config = BertConfig.from_pretrained("google-bert/bert-base-uncased", output_attentions=True, foo=False)
assert config.output_attentions == True
config, unused_kwargs = BertConfig.from_pretrained(
"google-bert/bert-base-uncased", output_attentions=True, foo=False, return_unused_kwargs=True
)
assert config.output_attentions == True
assert unused_kwargs == {"foo": False}get_config_dict
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs ) → tuple[Dict, Dict]
Từ pretrained_model_name_or_path, phân giải thành một từ điển các tham số, để sử dụng cho việc khởi tạo một PreTrainedConfig bằng from_dict.
Trả về cấu hình văn bản mtp để tạo mô hình MTP. Vì các lớp MTP được tạo bằng cách khởi tạo cùng các lớp với mô hình chính, chúng ta cần ghi đè các thuộc tính cụ thể theo chỉ số của cấu hình như layer_types hoặc mtp_layer_types để tạo các lớp mtp chính xác và tránh các vấn đề về chỉ số trong các lớp (vì các lớp MTP bắt đầu lại việc đánh chỉ số lớp từ 0).
get_text_config
< source >( decoder = Noneencoder = None )
Trả về cấu hình văn bản liên quan đến đầu vào văn bản (encoder) hoặc đầu ra văn bản (decoder) của mô hình. Các đối số đầu vào decoder và encoder có thể được sử dụng để chỉ định phần nào của mô hình mà chúng ta quan tâm, điều này hữu ích đối với các mô hình có cả chế độ đầu vào và đầu ra văn bản.
Có ba kết quả có thể xảy ra khi sử dụng phương pháp này:
- Trên hầu hết các mô hình, nó trả về chính bản thể config gốc.
- Trên các mô hình composite mới hơn (2024+), nó trả về phần văn bản của cấu hình, được đặt lồng bên dưới một tập hợp các tên hợp lệ.
- Trên các mô hình composite cũ hơn (2023-), nó loại bỏ các tham số chỉ có decoder khi
encoder=Truevà ngược lại.
Trả về giá trị cho biết cấu hình hiện tại có phải là mã tùy chỉnh hay không, tức là mã được tải từ hub hoặc được định nghĩa trong bất kỳ module/phân vùng người dùng cụ thể nào.
Trả về việc cấu hình hiện tại có phải là mã tùy chỉnh, tức là mã được tải từ hub, hay là lớp mà chúng ta vừa đăng ký thông qua register_for_auto_class hay không.
register_for_auto_class
< source >( auto_class = 'AutoConfig' )
Đăng ký lớp này với một lớp auto cho trước. Thao tác này chỉ nên được sử dụng cho các cấu hình tùy chỉnh vì các cấu hình trong thư viện đã được ánh xạ với AutoConfig.
save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs )
Tham số
- save_directory (
strhoặcos.PathLike) — Thư mục nơi tệp JSON cấu hình sẽ được lưu (sẽ được tạo nếu chưa tồn tại). - push_to_hub (
bool, tùy chọn, mặc định làFalse) — Có đẩy mô hình của bạn lên Hugging Face model hub sau khi lưu hay không. Bạn có thể chỉ định kho lưu trữ muốn đẩy đến bằngrepo_id(mặc định sẽ là tên củasave_directorytrong namespace của bạn). - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().
Lưu đối tượng cấu hình vào thư mục save_directory để có thể tải lại bằng phương thức lớp from_pretrained().
to_dict
< source >( ) → dict[str, Any]
Trả về
dict[str, Any]
Từ điển chứa tất cả các thuộc tính cấu thành lên bản thể cấu hình này.
Chuẩn hóa bản thể này thành một từ điển Python.
to_diff_dict
< source >( ) → dict[str, Any]
Trả về
dict[str, Any]
Từ điển chứa tất cả các thuộc tính cấu thành lên bản thể cấu hình này.
Xóa tất cả các thuộc tính khỏi cấu hình tương ứng với các thuộc tính cấu hình mặc định để tăng tính dễ đọc, trong khi luôn giữ lại thuộc tính config từ lớp. Dãy hóa thành một từ điển Python.
Lưu bản thể này vào một tệp JSON.
to_json_string
< source >( use_diff: bool = True ) → str
Chuẩn hóa bản thể này thành một chuỗi JSON.
cập nhật
< source >( config_dict: dict[str, Any] )
Cập nhật các thuộc tính của lớp này bằng các thuộc tính từ config_dict.
update_from_string
< source >( update_str: str )
Cập nhật các thuộc tính của lớp này bằng các thuộc tính từ update_str.
Định dạng mong đợi là ints, floats và strings giữ nguyên, còn với booleans hãy dùng true hoặc false. Ví dụ:
“n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index”
Các khóa cần thay đổi phải đã tồn tại trong đối tượng cấu hình.
Chạy các bộ xác thực lớp trên đối tượng.
Một phần của xác thực do @strict hỗ trợ. Xác thực kiến trúc của cấu hình.
Kiểm tra xem mlp_layer_types và layer_types đã được định nghĩa chính xác chưa.
Một phần của xác thực do @strict hỗ trợ. Xác thực nội dung của các token đặc biệt.