Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Referensi v2 pustaka paralel SageMaker model
Berikut ini adalah referensi untuk perpustakaan paralel SageMaker model v2 (SMP v2).
Topik
Parameter konfigurasi fitur inti SMP v2
Berikut ini adalah daftar lengkap parameter untuk mengaktifkan dan mengkonfigurasiFitur inti dari perpustakaan paralelisme SageMaker model v2. Ini harus ditulis dalam format JSON dan diteruskan ke PyTorch ModelTrainer dalam SageMaker Python SDK atau disimpan sebagai file JSON untuk SageMaker HyperPod.
{ "hybrid_shard_degree":Integer, "sm_activation_offloading":Boolean, "activation_loading_horizon":Integer, "fsdp_cache_flush_warnings":Boolean, "allow_empty_shards":Boolean, "tensor_parallel_degree":Integer, "context_parallel_degree":Integer, "expert_parallel_degree":Integer, "random_seed":Integer}
-
hybrid_shard_degree(Integer) — Menentukan derajat paralelisme terpecah-pecah. Nilai harus berupa bilangan bulat antara0danworld_size. Nilai default-nya adalah0.-
Jika diset
0el ke, itu akan kembali ke PyTorch implementasi asli dan API dalam skrip ketikatensor_parallel_degreeadalah 1. Jika tidak, ia menghitung sebanyak mungkinhybrid_shard_degreeberdasarkantensor_parallel_degreedanworld_size. Ketika kembali ke kasus penggunaan PyTorch FSDP asli, jika strategiFULL_SHARDyang Anda gunakan, itu terpecah di seluruh cluster GPU. JikaHYBRID_SHARDatau_HYBRID_SHARD_ZERO2apakah strateginya, itu setarahybrid_shard_degreedengan 8. Ketika paralelisme tensor diaktifkan, ia pecah berdasarkan revisi.hybrid_shard_degree -
Jika diset
1el ke, itu akan kembali ke PyTorch implementasi asli dan API untukNO_SHARDdalam skrip kapantensor_parallel_degreeadalah 1. Jika tidak, itu setara denganNO_SHARDdalam kelompok paralel tensor tertentu. -
Jika disetel ke bilangan bulat antara 2 dan
world_size, sharding terjadi di sejumlah GPU yang ditentukan. Jika Anda tidak mengaturnyasharding_strategydi skrip FSDP, skrip tersebut akan diganti ke.HYBRID_SHARDJika Anda mengatur_HYBRID_SHARD_ZERO2, yangsharding_strategyAnda tentukan digunakan.
-
-
sm_activation_offloading(Boolean) — Menentukan apakah akan mengaktifkan implementasi offloading aktivasi SMP. JikaFalse, pembongkaran menggunakan PyTorch implementasi asli. JikaTrue, ia menggunakan implementasi offloading aktivasi SMP. Anda juga perlu menggunakan PyTorch aktivasi offload wrapper (torch.distributed.algorithms._checkpoint.checkpoint_wrapper.offload_wrapper) di skrip Anda. Untuk mempelajari selengkapnya, lihat Pelepasan aktivasi. Nilai default-nya adalahTrue. -
activation_loading_horizon(Integer) — Bilangan bulat yang menentukan tipe horizon offloading aktivasi untuk FSDP. Ini adalah jumlah maksimum lapisan yang diperiksa atau diturunkan yang inputnya dapat berada di memori GPU secara bersamaan. Untuk mempelajari selengkapnya, lihat Pelepasan aktivasi. Nilai input harus berupa bilangan bulat positif. Nilai default-nya adalah2. -
fsdp_cache_flush_warnings(Boolean) — Mendeteksi dan memperingatkan jika pemisahan cache terjadi di pengelola PyTorch memori, karena dapat menurunkan kinerja komputasi. Nilai default-nya adalahTrue. -
allow_empty_shards(Boolean) — Apakah akan mengizinkan pecahan kosong saat memecah tensor jika tensor tidak dapat dibagi. Ini adalah perbaikan eksperimental untuk crash selama checkpointing dalam skenario tertentu. Menonaktifkan ini kembali ke PyTorch perilaku aslinya. Nilai default-nya adalahFalse. -
tensor_parallel_degree(Integer) — Menentukan derajat paralelisme tensor. Nilainya harus antara1danworld_size. Nilai default-nya adalah1. Perhatikan bahwa meneruskan nilai yang lebih besar dari 1 tidak mengaktifkan paralelisme konteks secara otomatis; Anda juga perlu menggunakan obor.sagemaker.transform API untuk membungkus model dalam skrip pelatihan Anda. Untuk mempelajari selengkapnya, lihat Paralelisme tensor. -
context_parallel_degree(Integer) — Menentukan derajat paralelisme konteks. Nilai harus antara1danworld_size, dan harus<= hybrid_shard_degree. Nilai default-nya adalah1. Perhatikan bahwa meneruskan nilai yang lebih besar dari 1 tidak mengaktifkan paralelisme konteks secara otomatis; Anda juga perlu menggunakan obor.sagemaker.transform API untuk membungkus model dalam skrip pelatihan Anda. Untuk mempelajari selengkapnya, lihat Paralelisme konteks. -
expert_parallel_degree(Integer) — Menentukan tingkat paralelisme ahli. Nilai harus antara 1 danworld_size. Nilai default-nya adalah1. Perhatikan bahwa meneruskan nilai yang lebih besar dari 1 tidak mengaktifkan paralelisme konteks secara otomatis; Anda juga perlu menggunakan obor.sagemaker.transform API untuk membungkus model dalam skrip pelatihan Anda. Untuk mempelajari selengkapnya, lihat Paralelisme ahli. -
random_seed(Integer) — Nomor benih untuk operasi acak dalam modul terdistribusi oleh paralelisme tensor SMP atau paralelisme ahli. Benih ini ditambahkan ke peringkat tensor-paralel atau ahli paralel untuk menetapkan benih aktual untuk setiap peringkat. Ini unik untuk setiap peringkat tensor-paralel dan ahli paralel. SMP v2 memastikan bahwa bilangan acak yang dihasilkan di peringkat tensor-paralel dan pakar-paralel masing-masing cocok dengan kasus paralelisme non-tensor-dan paralelisme non-ahli.
Referensi untuk paket SMP v2 tor ch.sagemaker
Bagian ini adalah referensi untuk torch.sagemaker paket yang disediakan oleh SMP v2.
Topik
torch.sagemaker.delayed_param. DelayedParamIniter
API untuk menerapkan Inisialisasi parameter tertunda ke PyTorch model.
class torch.sagemaker.delayed_param.DelayedParamIniter( model: nn.Module, init_method_using_config : Callable = None, verbose: bool = False, )
Parameter
-
model(nn.Module) — PyTorch Model untuk membungkus dan menerapkan fungsionalitas inisialisasi parameter tertunda dari SMP v2. -
init_method_using_config(Dapat dipanggil) - Jika Anda menggunakan implementasi paralel tensor dari SMP v2 atau didukungModel Hugging Face Transformer kompatibel dengan paralelisme tensor SMP, pertahankan parameter ini pada nilai default, yaitu.NoneSecara default,DelayedParamIniterAPI mengetahui cara menginisialisasi model yang diberikan dengan benar. Untuk model lain, Anda perlu membuat fungsi inisialisasi parameter khusus dan menambahkannya ke skrip Anda. Cuplikan kode berikut adalahinit_method_using_configfungsi default yang diterapkan SMP v2 untuk. Model Hugging Face Transformer kompatibel dengan paralelisme tensor SMP Gunakan cuplikan kode berikut sebagai referensi untuk membuat fungsi konfigurasi inisialisasi Anda sendiri, menambahkannya ke skrip Anda, dan meneruskannya keinit_method_using_configparameter API SMDelayedParamIniterP.from torch.sagemaker.utils.module_utils import empty_module_params, move_buffers_to_device # Define a custom init config function. defcustom_init_method_using_config(module): d = torch.cuda.current_device() empty_module_params(module, device=d) if isinstance(module, (nn.Linear, Conv1D)): module.weight.data.normal_(mean=0.0, std=config.initializer_range) if module.bias is not None: module.bias.data.zero_() elif isinstance(module, nn.Embedding): module.weight.data.normal_(mean=0.0, std=config.initializer_range) if module.padding_idx is not None: module.weight.data[module.padding_idx].zero_() elif isinstance(module, nn.LayerNorm): module.weight.data.fill_(1.0) module.bias.data.zero_() elif isinstance(module, LlamaRMSNorm): module.weight.data.fill_(1.0) move_buffers_to_device(module, device=d) delayed_initer = DelayedParamIniter(model, init_method_using_config=custom_init_method_using_config)Untuk informasi selengkapnya tentang
torch.sagemaker.module_utilfungsi dalam cuplikan kode sebelumnya, lihatfungsi dan properti util torch.sagemaker. -
verbose(Boolean) — Apakah akan mengaktifkan logging yang lebih rinci selama inisialisasi dan validasi. Nilai default-nya adalahFalse.
Metode
-
get_param_init_fn()— Mengembalikan fungsi inisialisasi parameter yang dapat Anda lewati keparam_init_fnargumen kelas pembungkus PyTorch FSDP. -
get_post_param_init_fn()— Mengembalikan fungsi inisialisasi parameter yang dapat Anda lewati kepost_param_init_fnargumen kelas pembungkus PyTorch FSDP. Ini diperlukan ketika Anda telah mengikat beban dalam model. Model harus menerapkan metode tersebuttie_weights. Untuk informasi lebih lanjut, lihat Catatan tentang berat terikat diInisialisasi parameter tertunda. -
count_num_params(module: nn.Module, *args: Tuple[nn.Parameter]) — Melacak berapa banyak parameter yang diinisialisasi oleh fungsi inisialisasi parameter. Ini membantu menerapkanvalidate_params_and_buffers_initedmetode berikut. Anda biasanya tidak perlu memanggil fungsi ini secara eksplisit, karenavalidate_params_and_buffers_initedmetode secara implisit memanggil metode ini di backend. -
validate_params_and_buffers_inited(enabled: bool=True) — Ini adalah pengelola konteks yang membantu memvalidasi bahwa jumlah parameter yang diinisialisasi cocok dengan jumlah total parameter dalam model. Ini juga memvalidasi bahwa semua parameter dan buffer sekarang ada di perangkat GPU, bukan perangkat meta. Ini meningkatAssertionErrorsjika kondisi ini tidak terpenuhi. Manajer konteks ini hanya opsional dan Anda tidak diharuskan menggunakan pengelola konteks ini untuk menginisialisasi parameter.
torch.sagemaker.distributed.checkpoint.state_dict_saver.async_save
API entri untuk penyimpanan asinkron. Gunakan metode ini untuk menyimpan state_dict secara asinkron ke yang ditentukan. checkpoint_id
def async_save( state_dict: STATE_DICT_TYPE, *, checkpoint_id: Union[str, os.PathLike, None] = None, storage_writer: Optional[StorageWriter] = None, planner: Optional[SavePlanner] = None, process_group: Optional[dist.ProcessGroup] = None, coordinator_rank: int = 0, queue : AsyncCallsQueue = None, sharded_strategy: Union[SaveShardedStrategy, Tuple[str, int], None] = None, wait_error_handling: bool = True, force_check_all_plans: bool = True, s3_region: Optional[str] = None, s3client_config: Optional[S3ClientConfig] = None ) -> None:
Parameter
-
state_dict(dict) - Diperlukan. Diktat negara untuk menabung. -
checkpoint_id(str) - Diperlukan. Jalur penyimpanan untuk menyimpan pos pemeriksaan. -
storage_writer(StorageWriter) - Opsional. ContohStorageWriterin PyTorch untuk melakukan operasi tulis. Jika ini tidak ditentukan, konfigurasi default StorageWriterdigunakan. -
planner(SavePlanner) - Opsional. ContohSavePlannerdi PyTorch. Jika ini tidak ditentukan, konfigurasi default SavePlannerdigunakan. -
process_group(ProcessGroup) - Opsional. Kelompok proses untuk dikerjakan. JikaNone, grup proses default (global) digunakan. -
coordinator_rank(int) - Opsional. Pangkat koordinator saat melakukan operator komunikasi kolektif sepertiAllReduce. -
queue(AsyncRequestQueue) - Opsional. Penjadwal async yang akan digunakan. Secara default, dibutuhkan parameter globalDEFAULT_ASYNC_REQUEST_QUEUE. -
sharded_strategy(PyTorchDistSaveShardedStrategy) - Opsional. Strategi sharded yang digunakan untuk menyimpan pos pemeriksaan. Jika ini tidak ditentukan,torch.sagemaker.distributed.checkpoint.state_dict_saver.PyTorchDistSaveShardedStrategydigunakan secara default. -
wait_error_handling(bool) - Opsional. Bendera yang menentukan apakah akan menunggu semua peringkat menyelesaikan penanganan kesalahan. Nilai default-nya adalahTrue. -
force_check_all_plans(bool) - Opsional. Bendera yang menentukan apakah akan menyinkronkan rencana secara paksa di seluruh peringkat, bahkan dalam kasus hit cache. Nilai default-nya adalahTrue. -
s3_region(str) - Opsional. Wilayah tempat bucket S3 berada. Jika tidak ditentukan, wilayah tersebut disimpulkan daricheckpoint_id. -
s3client_config(S3ClientConfig) - Opsional. Kelas data yang mengekspos parameter yang dapat dikonfigurasi untuk klien S3. Jika tidak disediakan, konfigurasi default S3ClientConfigdigunakan. part_sizeParameter diatur ke 64MB secara default.
torch.sagemaker.distributed.checkpoint.state_dict_saver.maybe_finalize_async_calls
Fungsi ini memungkinkan proses pelatihan untuk memantau beberapa permintaan asinkron yang harus dilakukan.
def maybe_finalize_async_calls( blocking=True, process_group=None ) -> List[int]:
Parameter
-
blocking(bool) - Opsional. JikaTrue, itu akan menunggu sampai semua permintaan aktif selesai. Jika tidak, itu hanya menyelesaikan permintaan asinkron yang telah selesai. Nilai default-nya adalahTrue. -
process_group(ProcessGroup) - Opsional. Kelompok proses untuk dioperasikan. Jika disetNoneel ke, grup proses default (global) digunakan.
Pengembalian
-
Daftar yang berisi indeks panggilan asinkron berhasil diselesaikan.
obor.sagemaker.distributed.checkpoint.state_dict_saver.save
Gunakan metode ini untuk menyimpan secara sin state_dict kron ke yang ditentukancheckpoint_id.
def save( state_dict: STATE_DICT_TYPE, *, checkpoint_id: Union[str, os.PathLike, None] = None, storage_writer: Optional[StorageWriter] = None, planner: Optional[SavePlanner] = None, process_group: Optional[dist.ProcessGroup] = None, coordinator_rank: int = 0, wait_error_handling: bool = True, force_check_all_plans: bool = True, s3_region: Optional[str] = None, s3client_config: Optional[S3ClientConfig] = None ) -> None:
Parameter
-
state_dict(dict) - Diperlukan. Diktat negara untuk menabung. -
checkpoint_id(str) - Diperlukan. Jalur penyimpanan untuk menyimpan pos pemeriksaan. -
storage_writer(StorageWriter) - Opsional. ContohStorageWriterin PyTorch untuk melakukan operasi tulis. Jika ini tidak ditentukan, konfigurasi default StorageWriterdigunakan. -
planner(SavePlanner) - Opsional. ContohSavePlannerdi PyTorch. Jika ini tidak ditentukan, konfigurasi default SavePlannerdigunakan. -
process_group(ProcessGroup) - Opsional. Kelompok proses untuk dikerjakan. JikaNone, grup proses default (global) digunakan. -
coordinator_rank(int) - Opsional. Pangkat koordinator saat melakukan operator komunikasi kolektif sepertiAllReduce. -
wait_error_handling(bool) - Opsional. Bendera yang menentukan apakah akan menunggu semua peringkat menyelesaikan penanganan kesalahan. Nilai default-nya adalahTrue. -
force_check_all_plans(bool) - Opsional. Bendera yang menentukan apakah akan menyinkronkan rencana secara paksa di seluruh peringkat, bahkan dalam kasus hit cache. Nilai default-nya adalahTrue. -
s3_region(str) - Opsional. Wilayah tempat bucket S3 berada. Jika tidak ditentukan, wilayah tersebut disimpulkan daricheckpoint_id. -
s3client_config(S3ClientConfig) - Opsional. Kelas data yang mengekspos parameter yang dapat dikonfigurasi untuk klien S3. Jika tidak disediakan, konfigurasi default S3ClientConfigdigunakan. part_sizeParameter diatur ke 64MB secara default.
obor.sagemaker.distributed.checkpoint.state_dict_loader.load
Muat kamus status dari model terdistribusi (state_dict).
def load( state_dict: Dict[str, Any], *, checkpoint_id: Union[str, os.PathLike, None] = None, storage_reader: Optional[StorageReader] = None, planner: Optional[LoadPlanner] = None, process_group: Optional[dist.ProcessGroup] = None, check_keys_matched: bool = True, coordinator_rank: int = 0, s3_region: Optional[str] = None, s3client_config: Optional[S3ClientConfig] = None ) -> None:
Parameter
-
state_dict(dict) - Diperlukan. Untukstate_dictmemuat. -
checkpoint_id(str) - Diperlukan. ID pos pemeriksaan. Articheckpoint_idtergantung pada penyimpanan. Ini bisa menjadi jalur ke folder atau ke file. Ini juga bisa menjadi kunci jika penyimpanan adalah penyimpanan nilai kunci. -
storage_reader(StorageReader) - Opsional. ContohStorageReaderin PyTorch untuk melakukan operasi baca. Jika tidak ditentukan, checkpointing terdistribusi akan secara otomatis menyimpulkan pembaca berdasarkan. checkpoint_idJikacheckpoint_idjugaNone, kesalahan pengecualian muncul. -
planner(StorageReader) - Opsional. ContohLoadPlannerdi PyTorch. Jika tidak ditentukan, konfigurasi default LoadPlannerdigunakan. -
check_keys_matched(bool) - Opsional. Jika diaktifkan, periksa apakahstate_dictkunci dari semua peringkat cocok menggunakanAllGather. -
s3_region(str) - Opsional. Wilayah tempat bucket S3 berada. Jika tidak ditentukan, wilayah tersebut disimpulkan daricheckpoint_id. -
s3client_config(S3ClientConfig) - Opsional. Kelas data yang mengekspos parameter yang dapat dikonfigurasi untuk klien S3. Jika tidak disediakan, konfigurasi default S3ClientConfigdigunakan. part_sizeParameter diatur ke 64MB secara default.
Torch.sagemaker.moe.moe_config.moeconfig
Kelas konfigurasi untuk mengatur Mixture-of-Experts (MoE). SMP-implementation Anda dapat menentukan nilai konfigurasi MoE melalui kelas ini dan meneruskannya ke panggilan torch.sagemaker.transform API. Untuk mempelajari lebih lanjut tentang penggunaan kelas ini untuk melatih model MoE, lihatParalelisme ahli.
class torch.sagemaker.moe.moe_config.MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 )
Parameter
-
smp_moe(Boolean) - Apakah akan menggunakan MoE SMP-implementation . Nilai default-nya adalahTrue. -
random_seed(Integer) - Nomor benih untuk operasi acak dalam modul terdistribusi paralel ahli. Benih ini ditambahkan ke peringkat paralel ahli untuk menetapkan benih aktual untuk setiap peringkat. Ini unik untuk setiap peringkat paralel ahli. Nilai default-nya adalah12345. -
moe_load_balancing(String) - Tentukan jenis penyeimbangan beban router MoE. Opsi yang valid adalahaux_loss,sinkhorn,balanced, dannone. Nilai default-nya adalahsinkhorn. -
global_token_shuffle(Boolean) - Apakah akan mengocokkan token di seluruh peringkat EP dalam grup EP yang sama. Nilai default-nya adalahFalse. -
moe_all_to_all_dispatcher(Boolean) - Apakah akan menggunakan operator all-to-all untuk komunikasi di MoE. Nilai default-nya adalahTrue. -
moe_aux_loss_coeff(Float) - Koefisien untuk kerugian penyeimbangan beban tambahan. Nilai default-nya adalah0.001. -
moe_z_loss_coeff(Float) - Koefisien untuk z-loss. Nilai default-nya adalah0.001.
obor.sagemaker.nn.attn. FlashSelfAttention
API untuk digunakan FlashAttention dengan SMP v2.
class torch.sagemaker.nn.attn.FlashSelfAttention( attention_dropout_prob: float = 0.0, scale: Optional[float] = None, triton_flash_attention: bool = False, use_alibi: bool = False, )
Parameter
-
attention_dropout_prob(float) — Probabilitas putus sekolah untuk diterapkan pada perhatian. Nilai default-nya adalah0.0. -
scale(float) — Jika dilewati, faktor skala ini diterapkan untuk softmax. Jika disetNoneel ke (yang juga merupakan nilai default), faktor skalanya adalah1 / sqrt(attention_head_size). Nilai default-nya adalahNone. -
triton_flash_attention(bool) — Jika dilewati, implementasi perhatian flash Triton digunakan. Ini diperlukan untuk mendukung Perhatian dengan Bias Linear (ALiBi) (lihatuse_alibiparameter berikut). Versi kernel ini tidak mendukung dropout. Nilai default-nya adalahFalse. -
use_alibi(bool) — Jika dilewatkan, ini mengaktifkan Attention with Linear Biases (ALiBi) menggunakan topeng yang disediakan. Saat menggunakan ALiBi, perlu masker perhatian yang disiapkan sebagai berikut. Nilai default-nya adalahFalse.def generate_alibi_attn_mask(attention_mask, batch_size, seq_length, num_attention_heads, alibi_bias_max=8): device, dtype = attention_mask.device, attention_mask.dtype alibi_attention_mask = torch.zeros( 1, num_attention_heads, 1, seq_length, dtype=dtype, device=device ) alibi_bias = torch.arange(1 - seq_length, 1, dtype=dtype, device=device).view( 1, 1, 1, seq_length ) m = torch.arange(1, num_attention_heads + 1, dtype=dtype, device=device) m.mul_(alibi_bias_max / num_attention_heads) alibi_bias = alibi_bias * (1.0 / (2 ** m.view(1, num_attention_heads, 1, 1))) alibi_attention_mask.add_(alibi_bias) alibi_attention_mask = alibi_attention_mask[..., :seq_length, :seq_length] if attention_mask is not None and attention_mask.bool().any(): alibi_attention_mask.masked_fill( attention_mask.bool().view(batch_size, 1, 1, seq_length), float("-inf") ) return alibi_attention_mask
Metode
-
forward(self, qkv, attn_mask=None, causal=False, cast_dtype=None, layout="b h s d")— Fungsi PyTorch modul reguler. Ketika amodule(x)dipanggil, SMP menjalankan fungsi ini secara otomatis.-
qkv—torch.Tensordari bentuk berikut:(batch_size x seqlen x (3 x num_heads) x head_size)atau(batch_size, (3 x num_heads) x seqlen x head_size), tupel yangtorch.Tensorsmasing-masing mungkin berbentuk(batch_size x seqlen x num_heads x head_size), atau(batch_size x num_heads x seqlen x head_size). Arg tata letak yang sesuai harus dilewatkan berdasarkan bentuknya. -
attn_mask-torch.Tensordari bentuk berikut(batch_size x 1 x 1 x seqlen). Untuk mengaktifkan parameter topeng perhatian ini, diperlukantriton_flash_attention=Truedanuse_alibi=True. Untuk mempelajari cara membuat topeng perhatian menggunakan metode ini, lihat contoh kode diFlashAttention. Nilai default-nya adalahNone. -
causal— Ketika disetFalseel ke, yang merupakan nilai default argumen, tidak ada topeng yang diterapkan. Saat diatur keTrue,forwardmetode ini menggunakan topeng segitiga bawah standar. Nilai default-nya adalahFalse. -
cast_dtype— Ketika diatur ke tertentudtype, ia melemparkanqkvtensor ke yangdtypesebelumnyaattn. Ini berguna untuk implementasi seperti GPT-NeoX model Hugging Face Transformer, yang memilikiqdankdengan penyematan putarfp32setelah. Jika disetel keNone, tidak ada cast yang diterapkan. Nilai default-nya adalahNone. -
layout(string) — Nilai yang tersedia adalahb h s dataub s h d. Ini harus diatur ke tata letakqkvtensor yang dilewatkan, sehingga transformasi yang sesuai dapat diterapkan.attnNilai default-nya adalahb h s d.
-
Pengembalian
Satu torch.Tensor dengan bentuk(batch_size x num_heads x
seq_len x head_size).
obor.sagemaker.nn.attn. FlashGroupedQueryAttention
API untuk digunakan FlashGroupedQueryAttention dengan SMP v2. Untuk mempelajari lebih lanjut tentang penggunaan API ini, lihatGunakan FlashAttention kernel untuk perhatian kueri yang dikelompokkan.
class torch.sagemaker.nn.attn.FlashGroupedQueryAttention( attention_dropout_prob: float = 0.0, scale: Optional[float] = None, )
Parameter
-
attention_dropout_prob(float) — Probabilitas putus sekolah untuk diterapkan pada perhatian. Nilai default-nya adalah0.0. -
scale(float) — Jika dilewati, faktor skala ini diterapkan untuk softmax. Jika disetNoneel ke,1 / sqrt(attention_head_size)digunakan sebagai faktor skala. Nilai default-nya adalahNone.
Metode
-
forward(self, q, kv, causal=False, cast_dtype=None, layout="b s h d")— Fungsi PyTorch modul reguler. Ketika amodule(x)dipanggil, SMP menjalankan fungsi ini secara otomatis.-
qtorch.Tensordari bentuk berikut(batch_size x seqlen x num_heads x head_size)atau(batch_size x num_heads x seqlen x head_size). Arg tata letak yang sesuai harus dilewatkan berdasarkan bentuk. -
kv—torch.Tensordari bentuk berikut(batch_size x seqlen x (2 x num_heads) x head_size)atau(batch_size, (2 x num_heads) x seqlen x head_size), atau tupel duatorch.Tensors, yang masing-masing mungkin berbentuk(batch_size x seqlen x num_heads x head_size)atau(batch_size x num_heads x seqlen x head_size).layoutArgumen yang tepat juga harus diteruskan berdasarkan bentuknya. -
causal— Ketika disetFalseel ke, yang merupakan nilai default argumen, tidak ada topeng yang diterapkan. Saat diatur keTrue,forwardmetode ini menggunakan topeng segitiga bawah standar. Nilai default-nya adalahFalse. -
cast_dtype— Ketika diatur ke dtype tertentu, ia melemparkanqkvtensor ke dtype sebelumnya.attnIni berguna untuk implementasi seperti Hugging Face Transformers GPT-NeoX, yang memiliki penyematanq,kfp32setelah putar. Jika disetel keNone, tidak ada cast yang diterapkan. Nilai default-nya adalahNone. -
layout (string) — Nilai yang tersedia adalah
"b h s d"atau"b s h d". Ini harus diatur ke tata letakqkvtensor yang dilewatkan, sehingga transformasi yang sesuai dapat diterapkan.attnNilai default-nya adalah"b h s d".
-
Pengembalian
Mengembalikan satu torch.Tensor (batch_size x num_heads x seq_len x
head_size) yang mewakili output dari perhitungan perhatian.
obor.sagemaker.nn.huggingface.llama_flashattn. LlamaFlashAttention
API yang mendukung FlashAttention model Llama. API ini menggunakan obor.sagemaker.nn.attn. FlashGroupedQueryAttention API di level rendah. Untuk mempelajari cara menggunakan ini, lihatGunakan FlashAttention kernel untuk perhatian kueri yang dikelompokkan.
class torch.sagemaker.nn.huggingface.llama_flashattn.LlamaFlashAttention( config: LlamaConfig )
Parameter
-
config— FlashAttention Konfigurasi untuk model Llama.
Metode
-
forward(self, hidden_states, attention_mask, position_ids, past_key_value, output_attentions, use_cache)-
hidden_states(torch.Tensor) — Keadaan tersembunyi dari tensor dalam bentuk(batch_size x seq_len x num_heads x head_size). -
attention_mask(torch.LongTensor) — Topeng untuk menghindari perhatian pada indeks token padding dalam bentuk(batch_size x seqlen). Nilai default-nya adalahNone. -
position_ids(torch.LongTensor) — Ketika tidakNoneada, itu dalam bentuk(batch_size x seqlen), menunjukkan indeks posisi setiap token urutan input dalam penyematan posisi. Nilai default-nya adalahNone. -
past_key_value(Cache) — Pre-computed keadaan tersembunyi (kunci dan nilai dalam blok perhatian diri dan di blok perhatian silang). Nilai default-nya adalahNone. -
output_attentions(bool) — Menunjukkan apakah akan mengembalikan tensor perhatian dari semua lapisan perhatian. Nilai default-nya adalahFalse. -
use_cache(bool) — Menunjukkan apakah akan mengembalikanpast_key_valuesstatus nilai kunci. Nilai default-nya adalahFalse.
-
Pengembalian
Mengembalikan satu torch.Tensor (batch_size x num_heads x seq_len x
head_size) yang mewakili output dari perhitungan perhatian.
obor.sagemaker.transform
SMP v2 menyediakan torch.sagemaker.transform() API ini untuk mengubah model Hugging Face Transformer menjadi implementasi model SMP dan mengaktifkan paralelisme tensor SMP.
torch.sagemaker.transform( model: nn.Module, device: Optional[torch.device] = None, dtype: Optional[torch.dtype] = None, config: Optional[Dict] = None, load_state_dict_from_rank0: bool = False, cp_comm_type: str = "p2p" )
SMP v2 mempertahankan kebijakan transformasi untuk Model Hugging Face Transformer kompatibel dengan paralelisme tensor SMP dengan mengubah konfigurasi model Hugging Face Transformer ke konfigurasi transformator SMP.
Parameter
-
model(torch.nn.Module) — Model dari Model Hugging Face Transformer kompatibel dengan paralelisme tensor SMP untuk mengubah dan menerapkan fitur paralelisme tensor dari perpustakaan SMP. -
device(torch.device) — Jika dilewati, model baru dibuat pada perangkat ini. Jika modul asli memiliki parameter apa pun pada perangkat meta (lihatInisialisasi parameter tertunda), maka modul yang diubah juga akan dibuat pada perangkat meta, mengabaikan argumen yang diteruskan di sini. Nilai default-nya adalahNone. -
dtype(torch.dtype) — Jika diteruskan, tetapkan ini sebagai manajer konteks dtype untuk pembuatan model dan membuat model dengan dtype ini. Ini biasanya tidak perlu, karena kita ingin membuat modelfp32saat menggunakanMixedPrecision, danfp32merupakan dtype default di PyTorch. Nilai default-nya adalahNone. -
config(dict) - Ini adalah kamus untuk mengkonfigurasi transformator SMP. Nilai default-nya adalahNone. -
load_state_dict_from_rank0(Boolean) - Secara default, modul ini membuat instance baru model dengan bobot baru. Ketika argumen ini disetTrueel ke, SMP mencoba memuat kamus keadaan PyTorch model asli dari peringkat 0 ke dalam model yang diubah untuk grup paralel tensor yang merupakan bagiannya peringkat 0. Ketika ini disetel keTrue, peringkat 0 tidak dapat memiliki parameter apa pun di perangkat meta. Hanya kelompok paralel tensor pertama yang mengisi bobot dari peringkat 0 setelah panggilan transformasi ini. Anda perlu mengatursync_module_stateskeTruedalam pembungkus FSDP untuk mendapatkan bobot ini dari grup paralel tensor pertama ke semua proses lainnya. Dengan ini diaktifkan, pustaka SMP memuat kamus status dari model asli. Pustaka SMP mengambil model sebelum transformstate_dictasi, mengubahnya agar sesuai dengan struktur model yang diubah, memecahnya untuk setiap peringkat paralel tensor, mengkomunikasikan keadaan ini dari peringkat 0 ke peringkat lain dalam kelompok paralel tensor yang merupakan bagian dari peringkat 0, dan memuatnya. Nilai default-nya adalahFalse. cp_comm_type(str) — Menentukan implementasi paralelisme konteks dan hanya berlaku jikacontext_parallel_degreelebih besar dari 1. Nilai yang tersedia untuk parameter ini adalahp2pdanall_gather.p2pImplementasi menggunakan panggilan kirim-terima peer-to-peer untuk akumulasi tensor kunci-dan-nilai (KV) selama perhitungan perhatian, berjalan secara asinkron dan memungkinkan komunikasi tumpang tindih dengan komputasi. Di sisi lain,all_gatherimplementasi menggunakan operasi kolektifAllGatherkomunikasi untuk akumulasi tensor KV. Nilai default-nya adalah"p2p".
Pengembalian
Mengembalikan model yang diubah yang dapat Anda bungkus dengan PyTorch FSDP. Ketika load_state_dict_from_rank0 disetel keTrue, grup paralel tensor yang melibatkan peringkat 0 memiliki bobot yang dimuat dari kamus keadaan asli pada peringkat 0. Saat menggunakan Inisialisasi parameter tertunda pada model asli, hanya peringkat ini yang memiliki tensor aktual pada CPU untuk parameter dan buffer dari model yang diubah. Sisa peringkat terus memiliki parameter dan buffer pada perangkat meta untuk menghemat memori.
fungsi dan properti util torch.sagemaker
fungsi util torch.sagemaker
-
torch.sagemaker.init(config: Optional[Union[str, Dict[str, Any]]] = None) -> None— Menginisialisasi pekerjaan PyTorch pelatihan dengan SMP. -
torch.sagemaker.is_initialized() -> bool— Memeriksa apakah pekerjaan pelatihan diinisialisasi dengan SMP. Saat kembali ke native PyTorch saat pekerjaan diinisialisasi dengan SMP, beberapa properti tidak relevan dan menjadiNone, seperti yang ditunjukkan dalam daftar Properties berikut. -
torch.sagemaker.utils.module_utils.empty_module_params(module: nn.Module, device: Optional[torch.device] = None, recurse: bool = False) -> nn.Module- Membuat parameter kosong pada yang diberikandevicejika ada, dan dapat rekursif untuk semua modul bersarang jika ditentukan. -
torch.sagemaker.utils.module_utils.move_buffers_to_device(module: nn.Module, device: torch.device, recurse: bool = False) -> nn.Module— Memindahkan buffer modul ke yang diberikandevice, dan dapat rekursif untuk semua modul bersarang jika ditentukan.
Sifat-sifat
torch.sagemaker.statememegang beberapa properti yang berguna setelah inisialisasi SMP dengan. torch.sagemaker.init
-
torch.sagemaker.state.hybrid_shard_degree(int) — Tingkat paralelisme data terpecah-pecah, salinan dari input pengguna dalam konfigurasi SMP diteruskan ke.torch.sagemaker.init()Untuk mempelajari selengkapnya, lihat Gunakan perpustakaan paralelisme SageMaker model v2. -
torch.sagemaker.state.rank(int) — Peringkat global untuk perangkat, dalam kisaran[0, world_size). -
torch.sagemaker.state.rep_rank_process_group(torch.distributed.ProcessGroup) — Grup proses termasuk semua perangkat dengan peringkat replikasi yang sama. Perhatikan perbedaan halus tetapi mendasar dengantorch.sagemaker.state.tp_process_group. Ketika kembali ke asli PyTorch, itu kembaliNone. -
torch.sagemaker.state.tensor_parallel_degree(int) — Tingkat paralelisme tensor, salinan dari input pengguna dalam konfigurasi SMP diteruskan ke.torch.sagemaker.init()Untuk mempelajari selengkapnya, lihat Gunakan perpustakaan paralelisme SageMaker model v2. -
torch.sagemaker.state.tp_size(int) — Alias untuktorch.sagemaker.state.tensor_parallel_degree. -
torch.sagemaker.state.tp_rank(int) — Peringkat paralelisme tensor untuk perangkat dalam kisaran[0, tp_size), ditentukan oleh derajat paralelisme tensor dan mekanisme peringkat. -
torch.sagemaker.state.tp_process_group(torch.distributed.ProcessGroup) — Grup proses paralel tensor termasuk semua perangkat dengan peringkat yang sama di dimensi lain (misalnya, paralelisme dan replikasi data terpecah-pecah) tetapi peringkat paralel tensor yang unik. Ketika kembali ke asli PyTorch, itu kembaliNone. -
torch.sagemaker.state.world_size(int) — Jumlah total perangkat yang digunakan dalam pelatihan.
Tingkatkan dari SMP v1 ke SMP v2
Untuk pindah dari SMP v1 ke SMP v2, Anda harus membuat perubahan skrip untuk menghapus API SMP v1 dan menerapkan API SMP v2. Alih-alih memulai dari skrip SMP v1 Anda, kami sarankan Anda memulai dari skri PyTorch p FSDP, dan ikuti instruksi di. Gunakan perpustakaan paralelisme SageMaker model v2
Untuk membawa model SMP v1 ke SMP v2, di SMP v1 Anda harus mengumpulkan kamus status model lengkap dan menerapkan fungsi terjemahan pada kamus status model untuk mengubahnya menjadi format pos pemeriksaan model Hugging Face Transformers. Kemudian di SMP v2, seperti yang dibahas diPemeriksaan menggunakan SMP, Anda dapat memuat pos pemeriksaan model Hugging Face Transformers, dan kemudian melanjutkan dengan menggunakan API PyTorch pos pemeriksaan dengan SMP v2. Untuk menggunakan SMP dengan model PyTorch FSDP Anda, pastikan Anda pindah ke SMP v2 dan membuat perubahan pada skrip pelatihan Anda untuk menggunakan PyTorch FSDP dan fitur terbaru lainnya.
import smdistributed.modelparallel.torch as smp # Create model model = ... model = smp.DistributedModel(model) # Run training ... # Save v1 full checkpoint if smp.rdp_rank() == 0: model_dict = model.state_dict(gather_to_rank0=True) # save the full model # Get the corresponding translation function in smp v1 and translate if model_type == "gpt_neox": from smdistributed.modelparallel.torch.nn.huggingface.gptneox import translate_state_dict_to_hf_gptneox translated_state_dict = translate_state_dict_to_hf_gptneox(state_dict, max_seq_len=None) # Save the checkpoint checkpoint_path = "checkpoint.pt" if smp.rank() == 0: smp.save( {"model_state_dict": translated_state_dict}, checkpoint_path, partial=False, )
Untuk menemukan fungsi terjemahan yang tersedia di SMP v1, lihatDukungan untuk Model Transformer Wajah Memeluk.
Untuk instruksi tentang penyimpanan dan pemuatan pos pemeriksaan model di SMP v2, lihat. Pemeriksaan menggunakan SMP