Transformers documentation
ESM
Model ini disumbangkan ke Hugging Face Transformers pada 2022-09-30.
ESM
Ikhtisar
Halaman ini menyediakan kode dan bobot terlatih untuk model bahasa protein Transformer dari Tim Riset AI Fundamental Meta AI, yang menyediakan ESMFold dan ESM-2 terkini, serta ESM-1b dan ESM-1v yang sebelumnya dirilis. Model bahasa protein Transformer diperkenalkan dalam makalah Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences oleh Alexander Rives, Joshua Meier, Tom Sercu, Siddharth Goyal, Zeming Lin, Jason Liu, Demi Guo, Myle Ott, C. Lawrence Zitnick, Jerry Ma, dan Rob Fergus. Versi pertama dari makalah ini dicetak pra pada tahun 2019.
ESM-2 melampaui semua model bahasa protein single-sequence yang diuji di berbagai tugas prediksi struktur, dan memungkinkan prediksi struktur pada resolusi atomik. Model ini dirilis bersama dengan makalah Language models of protein sequences at the scale of evolution enable accurate structure prediction oleh Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Sal Candido, dan Alexander Rives.
ESMFold juga diperkenalkan dalam makalah ini. ESMFold menggunakan batang (stem) ESM-2 dengan kepala (head) yang dapat memprediksi struktur protein terlipat dengan akurasi state-of-the-art. Berbeda dengan AlphaFold2, ESMFold mengandalkan token embeddings dari batang model bahasa protein pra-terlatih yang besar dan tidak melakukan langkah multiple sequence alignment (MSA) pada saat inferensi. Hal ini berarti checkpoint ESMFold sepenuhnya “standalone” — mereka tidak memerlukan basis data urutan dan struktur protein yang diketahui beserta alat kueri eksternal terkait untuk membuat prediksi, dan sebagai hasilnya jauh lebih cepat.
The abstract from “Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences” is
Dalam bidang kecerdasan buatan, kombinasi skala data dan kapasitas model yang dimungkinkan oleh pembelajaran tanpa pengawasan telah mendorong kemajuan besar dalam pembelajaran representasi dan generasi statistik. Dalam ilmu kehidupan, pertumbuhan pengurutan (sequencing) yang diantisipasi menjanjikan data tanpa preseden tentang keragaman urutan alami. Pemodelan bahasa protein pada skala evolusi merupakan langkah logis menuju kecerdasan buatan prediktif dan generatif untuk biologi. Untuk tujuan ini, kami menggunakan pembelajaran tanpa pengawasan untuk melatih model bahasa kontekstual yang dalam pada 86 miliar asam amino di seluruh 250 juta urutan protein yang mencakup keragaman evolusioner. Model yang dihasilkan mengandung informasi tentang sifat biologis dalam representasinya. Representasi tersebut dipelajari hanya dari data urutan. Ruang representasi yang dipelajari memiliki organisasi multiskala yang mencerminkan struktur dari tingkat sifat biokimia asam amino hingga homologi jarak jauh protein. Informasi tentang struktur sekunder dan tersier dikodekan dalam representasi dan dapat diidentifikasi melalui proyeksi linear. Pembelajaran representasi menghasilkan fitur yang digeneralisasikan di berbagai aplikasi, memungkinkan prediksi terawasi mutasi dan struktur sekunder yang mutakhir (state-of-the-art) serta meningkatkan fitur mutakhir untuk prediksi kontak jarak jauh.
The abstract from “Language models of protein sequences at the scale of evolution enable accurate structure prediction” is
Model bahasa besar baru-baru ini terbukti mengembangkan kemampuan emergen seiring dengan skala, melampaui pencocokan pola sederhana untuk melakukan penalaran tingkat tinggi serta menghasilkan gambar dan teks yang menyerupai kehidupan nyata. Meskipun model bahasa yang dilatih pada urutan protein telah dipelajari pada skala yang lebih kecil, masih sedikit yang diketahui tentang apa yang mereka pelajari mengenai biologi saat mereka diskalakan. Dalam karya ini, kami melatih model hingga 15 miliar parameter, model bahasa protein terbesar yang dievaluasi hingga saat ini. Kami menemukan bahwa seiring dengan penskalaan model, mereka mempelajari informasi yang memungkinkan prediksi struktur tiga dimensi protein pada resolusi atom individual. Kami memperkenalkan ESMFold untuk prediksi struktur tingkat atom end-to-end dengan akurasi tinggi langsung dari urutan individual protein. ESMFold memiliki akurasi yang serupa dengan AlphaFold2 dan RoseTTAFold untuk urutan dengan perplexity rendah yang dipahami dengan baik oleh model bahasa. Inferensi ESMFold satu orde magnitudo lebih cepat daripada AlphaFold2, memungkinkan eksplorasi ruang struktural protein metagenomik dalam skala waktu yang praktis.
Kode asli dapat ditemukan di sini dan dikembangkan oleh tim Fundamental AI Research di Meta AI. ESM-1b, ESM-1v, dan ESM-2 disumbangkan ke huggingface oleh jasonliu dan Matt.
ESMFold disumbangkan ke huggingface oleh Matt dan Sylvain, dengan ucapan terima kasih yang besar kepada Nikita Smetanin, Roshan Rao, dan Tom Sercu atas bantuan mereka selama proses tersebut!
Tips penggunaan
- Model ESM dilatih dengan tujuan pemodelan bahasa yang disamarkan (masked language modeling/MLM).
- Port HuggingFace dari ESMFold menggunakan sebagian dari pustaka openfold. Pustaka
openfoldberlisensi di bawah Apache License 2.0.
Sumber daya
- Panduan tugas klasifikasi teks
- Panduan tugas klasifikasi token
- Panduan tugas pemodelan bahasa tersembunyi
EsmConfig
kelas transformers.EsmConfig
< 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 = Nonevocab_size: int | None = Nonemask_token_id: int | None = Nonepad_token_id: int | None = Nonehidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_dropout_prob: float | None = 0.1attention_probs_dropout_prob: float | None = 0.1max_position_embeddings: int = 1026rope_theta: float = 10000.0initializer_range: float = 0.02layer_norm_eps: float | None = 1e-12position_embedding_type: str | None = 'absolute'use_cache: bool = Trueemb_layer_norm_before: bool | None = Nonetoken_dropout: bool | None = Falseis_folding_model: bool | None = Falseesmfold_config: dict | transformers.models.esm.configuration_esm.EsmFoldConfig | None = Nonevocab_list: list[str] | tuple[str, ...] | None = Noneis_decoder: bool | None = Falseadd_cross_attention: bool | None = Falsetie_word_embeddings: bool = Truebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = 2 )
Parameter
- vocab_size (
int, opsional) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - mask_token_id (
int, opsional) — Indeks token mask dalam kosakata. Ini harus disertakan dalam config karena trik penskalaan “mask-dropout”, yang akan menskalakan input berdasarkan jumlah token yang di-mask. - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata. - hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - intermediate_size (
int, opsional, default3072) — Dimensi representasi MLP. - hidden_dropout_prob (
float, opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - attention_probs_dropout_prob (
float, opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - max_position_embeddings (
int, opsional, default1026) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - rope_theta (
float, default 10000.0) — Periode dasar dari embedding RoPE. Hanya digunakan ketikaposition_embedding_typediatur ke"rotary". - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - position_embedding_type (
str, opsional, default"absolute") — Jenis position embedding. Pilih salah satu dari"absolute"atau “rotary”`. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - emb_layer_norm_before (
bool, opsional) — Apakah akan menerapkan normalisasi lapisan setelah embedding tetapi sebelum batang utama jaringan. - token_dropout (
bool, defaultnyaFalse) — Ketika ini diaktifkan, token yang dimasker diperlakukan seolah-olah telah dihapus oleh input dropout. - is_folding_model (
bool, defaultnyaFalse) — Ketika ini diaktifkan, model ESMFold akan diinisialisasi. - esmfold_config (
dict, opsional) — Konfigurasi untuk memulai modul ESMFold. - vocab_list (
list, opsional) — Daftar item kosakata. - is_decoder (
bool, opsional, defaultFalse) — Apakah model digunakan sebagai decoder atau tidak. JikaFalse, model digunakan sebagai encoder. - add_cross_attention (
bool, opsional, defaultFalse) — Apakah lapisan cross-attention harus ditambahkan ke model. - tie_word_embeddings (
bool, opsional, defaultTrue) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - bos_token_id (
int, opsional) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional, default2) — ID token yang digunakan untuk end-of-stream dalam kosakata.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari EsmModel. Kelas ini digunakan untuk membuat instans model Esm sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari facebook/esm-1b
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import EsmModel, EsmConfig
>>> # Initializing a ESM facebook/esm-1b style configuration
>>> configuration = EsmConfig(vocab_size=33)
>>> # Initializing a model from the configuration
>>> model = EsmModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configEsmTokenizer
kelas transformers.EsmTokenizer
< source >( vocab_fileunk_token = '<unk>'cls_token = '<cls>'pad_token = '<pad>'mask_token = '<mask>'eos_token = '<eos>'**kwargs )
Membangun tokenizer ESM.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None )
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Parameter
- token_ids_0 (
list[int]) — Daftar id dari urutan pertama. - token_ids_1 (
list[int], opsional) — Daftar id dari urutan kedua. - already_has_special_tokens (
bool, opsional, defaultFalse) — Apakah daftar token sudah diformat dengan token khusus untuk model.
Mengembalikan
Daftar bilangan bulat dalam rentang [0, 1]
1 untuk token khusus, 0 untuk token urutan.
Mengambil id urutan dari daftar token yang tidak memiliki token khusus yang ditambahkan. Metode ini dipanggil saat menambahkan token khusus menggunakan metode prepare_for_model atau encode_plus tokenizer.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Buat mask dari dua urutan yang diteruskan untuk digunakan dalam tugas klasifikasi pasangan urutan.
Metode ini secara dinamis membangun ID tipe token berdasarkan atribut konfigurasi tokenizer:
token_type_ids_pattern: Pola yang digunakan (“all_zeros” atau “bert_style”)token_type_ids_include_special_tokens: Apakah token khusus diperhitungkan dalam perhitungan panjang
Contoh:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsEsmModel
kelas transformers.EsmModel
< source >( config: EsmConfigadd_pooling_layer = True )
Parameter
- config (EsmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
- add_pooling_layer (
bool, opsional, defaultTrue) — Apakah akan menambahkan lapisan pooling
Model Esm polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk((batch_size, sequence_length))) — Indeks token dari urutan input dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk((batch_size, sequence_length)), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensordengan bentuk((batch_size, sequence_length), hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - encoder_hidden_states (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention jika model dikonfigurasi sebagai decoder. - encoder_attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding dari input encoder. Mask ini digunakan dalam cross-attention jika model dikonfigurasi sebagai decoder. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
Mengembalikan
BaseModelOutputWithPoolingAndCrossAttentions atau tuple(torch.Tensor)
A BaseModelOutputWithPoolingAndCrossAttentions atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EsmConfig) dan input.
Metode forward dari EsmModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.pooler_output (
torch.Tensordengan bentuk(batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
cross_attentions (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_attentions=Truedanconfig.add_cross_attention=Truediteruskan atau ketikaconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention, dan secara opsional jika
config.is_encoder_decoder=Truedi blok cross-attention) yang dapat digunakan (lihat inputpast_key_values) untuk mempercepat decoding berurutan.
EsmForMaskedLM
kelas transformers.EsmForMaskedLM
< source >( config: EsmConfig )
Parameter
- config (EsmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Esm dengan kepala language modeling di atasnya.”
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MaskedLMOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - encoder_hidden_states (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention jika model dikonfigurasi sebagai decoder. - encoder_attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding dari input encoder. Mask ini digunakan dalam cross-attention jika model dikonfigurasi sebagai decoder. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam[-100, 0, ..., config.vocab_size](lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size].
Mengembalikan
MaskedLMOutput atau tuple(torch.Tensor)
A MaskedLMOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EsmConfig) dan input.
Metode forward EsmForMaskedLM menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan ketikalabelsdisediakan) — Masked language modeling (MLM) loss.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoTokenizer, EsmForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForMaskedLM.from_pretrained("facebook/esm-1b")
>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...EsmForSequenceClassification
kelas transformers.EsmForSequenceClassification
< source >( config: EsmConfig )
Parameter
- config (EsmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model transformer ESM dengan kepala klasifikasi/regresi urutan di atasnya (lapisan linear di atas output yang dipool) misalnya untuk tugas GLUE.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi urutan. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
Mengembalikan
SequenceClassifierOutput atau tuple(torch.Tensor)
A SequenceClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EsmConfig) dan input.
Metode forward dari EsmForSequenceClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).logits (
torch.Tensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh klasifikasi label tunggal:
>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Contoh klasifikasi multi-label:
>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained(
... "facebook/esm-1b", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossEsmForTokenClassification
kelas transformers.EsmForTokenClassification
< source >( config: EsmConfig )
Parameter
- config (EsmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Esm transformer dengan kepala klasifikasi token di atasnya (lapisan linear di atas output hidden-states) misalnya untuk tugas Named-Entity-Recognition (NER).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian klasifikasi token. Indeks harus berada dalam[0, ..., config.num_labels - 1].
Mengembalikan
TokenClassifierOutput atau tuple(torch.Tensor)
A TokenClassifierOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EsmConfig) dan input.
Metode forward dari EsmForTokenClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.num_labels)) — Skor klasifikasi (sebelum SoftMax).hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoTokenizer, EsmForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForTokenClassification.from_pretrained("facebook/esm-1b")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...EsmForProteinFolding
kelas transformers.EsmForProteinFolding
< source >( config: EsmConfig )
Parameter
- config (EsmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
ESMForProteinFolding adalah port HuggingFace dari model ESMFold asli. Model ini terdiri dari “stem” ESM-2 yang diikuti oleh “head” pelipatan protein, meskipun berbeda dari sebagian besar head output lainnya, “head” ini memiliki ukuran dan waktu eksekusi yang serupa dengan seluruh bagian model lainnya! Model ini menghasilkan kamus yang berisi informasi struktural prediksi tentang protein input.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonemasking_pattern: typing.Optional[torch.Tensor] = Nonenum_recycles: int | None = Noneoutput_hidden_states: bool | None = False**kwargs ) → EsmForProteinFoldingOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu input ID?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - masking_pattern (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Lokasi token yang akan di-mask selama pelatihan sebagai bentuk regularisasi. Nilai mask dipilih dalam[0, 1]. - num_recycles (
int, opsional, defaultnyaNone) — Jumlah kali urutan input didaur ulang. JikaNone, defaultnya adalahconfig.num_recycles. “Daur ulang” terdiri dari memasukkan kembali output dari folding trunk sebagai input ke trunk. Selama pelatihan, jumlah daur ulang harus bervariasi pada setiap batch, untuk memastikan bahwa model belajar menghasilkan prediksi yang valid setelah setiap daur ulang. Selama inferensi, num_recycles harus diatur ke nilai tertinggi yang digunakan saat model dilatih untuk akurasi maksimal. Sesuai dengan itu, ketika nilai ini diatur keNone, config.max_recycles digunakan. - output_hidden_states (
bool, opsional, defaultFalse) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut.
Mengembalikan
EsmForProteinFoldingOutput atau tuple(torch.Tensor)
EsmForProteinFoldingOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EsmConfig) dan input.
Metode forward EsmForProteinFolding menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- frames (
torch.Tensor, opsional) — Frame output. - sidechain_frames (
torch.Tensor, opsional) — Output frame sidechain. - unnormalized_angles (
torch.Tensor, opsional) — Sudut torsi tulang punggung dan rantai samping yang diprediksi, belum dinormalisasi. - angles (
torch.Tensor, opsional) — Sudut torsi backbone dan rantai samping yang diprediksi. - positions (
torch.Tensor, opsional) — Posisi prediksi dari atom backbone dan side chain. - states (
torch.Tensor, opsional) — Hidden states dari protein folding trunk. - s_s (
torch.Tensor, opsional) — Embedding per residu yang diturunkan dengan mengonkatenasi hidden states dari setiap lapisan stem LM ESM-2. - s_z (
torch.Tensor, opsional) — Embedding residu pairwise. - distogram_logits (
torch.Tensor, opsional) — Logit input ke distogram yang digunakan untuk menghitung jarak residu. - lm_logits (
torch.Tensor, opsional) — Logits yang dihasilkan oleh batang model bahasa protein ESM-2. - aatype (
torch.Tensor, opsional) — Asam amino input (indeks AlphaFold2). - atom14_atom_exists (
torch.Tensor, opsional) — Apakah setiap atom ada dalam representasi atom14. - residx_atom14_to_atom37 (
torch.Tensor, opsional) — Pemetaan antara atom dalam representasi atom14 dan atom37. - residx_atom37_to_atom14 (
torch.Tensor, opsional) — Pemetaan antara atom dalam representasi atom37 dan atom14. - atom37_atom_exists (
torch.Tensor, opsional) — Apakah setiap atom ada dalam representasi atom37. - residue_index (
torch.Tensor, opsional) — Indeks dari setiap residu dalam rantai protein. Kecuali token padding internal digunakan, ini akan berupa urutan bilangan bulat dari 0 hinggasequence_length. - lddt_head (
torch.Tensor, opsional) — Output mentah dari lddt head yang digunakan untuk menghitung plddt. - plddt (
torch.Tensor, opsional) — Skor kepercayaan per residu. Daerah dengan kepercayaan rendah dapat menunjukkan area di mana prediksi model tidak pasti, atau di mana struktur protein tidak teratur. - ptm_logits (
torch.Tensor, opsional) — Logit mentah yang digunakan untuk menghitung ptm. - ptm (
torch.Tensor, opsional) — keluaran TM-score yang mewakili tingkat kepercayaan model secara keseluruhan terhadap struktur. - aligned_confidence_probs (
torch.Tensor, opsional) — Skor kepercayaan per residu untuk struktur yang selaras. - predicted_aligned_error (
torch.Tensor, opsional) — Kesalahan yang diprediksi antara prediksi model dan nilai sebenarnya (ground truth). - max_predicted_aligned_error (
torch.Tensor, opsional) — Error prediksi maksimum per sampel.
Contoh:
>>> from transformers import AutoTokenizer, EsmForProteinFolding
>>> model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1")
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esmfold_v1")
>>> inputs = tokenizer(["MLKNVQVQLV"], return_tensors="pt", add_special_tokens=False) # A tiny random peptide
>>> outputs = model(**inputs)
>>> folded_positions = outputs.positions