

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pengoptimal State Sharding
<a name="model-parallel-extended-features-pytorch-optimizer-state-sharding"></a>

*Sharding status pengoptimal * adalah teknik hemat memori yang berguna yang memecah status pengoptimal (kumpulan bobot yang menggambarkan status pengoptimal) di seluruh grup perangkat paralel data. Anda dapat menggunakan sharding status pengoptimal setiap kali Anda menggunakan pengoptimal stateful (seperti Adam) atau pengoptimal FP16 (yang menyimpan salinan parameter FP16 dan FP32).

**catatan**  
Sharding status pengoptimal tersedia untuk PyTorch di pustaka paralelisme SageMaker model v1.6.0 dan yang lebih baru.

## Cara Menggunakan Optimizer State Sharding
<a name="model-parallel-extended-features-pytorch-optimizer-state-sharding-how-to-use"></a>

Anda dapat mengaktifkan sharding * status pengoptimal * dengan menyetel `"shard_optimizer_state": True` dalam konfigurasi. `modelparallel` 

Ketika fitur ini dihidupkan, perpustakaan mempartisi kumpulan parameter model berdasarkan derajat paralelisme data. Gradien yang sesuai dengan partisi `i` ke-h berkurang hanya pada peringkat paralel data `i` ke-th. Pada akhir panggilan pertama ke fungsi `smp.step` dekorator, pengoptimal dibungkus dengan `smp.DistributedOptimizer` mendefinisikan ulang parameternya agar hanya terbatas pada parameter yang sesuai dengan partisi peringkat paralel data saat ini. Parameter yang didefinisikan ulang disebut parameter * virtual * dan berbagi penyimpanan yang mendasarinya dengan parameter asli. Selama panggilan pertama ke`optimizer.step`, status pengoptimal dibuat berdasarkan parameter yang didefinisikan ulang ini, yang dipecah karena partisi asli. Setelah pembaruan pengoptimal, AllGather operasi (sebagai bagian dari `optimizer.step` panggilan) berjalan melintasi peringkat paralel data untuk mencapai status parameter yang konsisten.

**Tip**  
Pengoptimalan status sharding dapat berguna ketika tingkat paralelisme data lebih besar dari 1 dan model memiliki lebih dari satu miliar parameter.   
Tingkat paralelisme data dihitung oleh`(processes_per_host * instance_count / pipeline_parallel_degree)`, dan `smp.dp_size()` fungsi menangani ukuran di latar belakang.

**Konfigurasikan a SageMaker PyTorch ModelTrainer **

```
mpi_options = {
    "enabled" : True,
    "processes_per_host" : 8,               # 8 processes
    "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none "
}

smp_options = {
    "enabled":True,
    "parameters": {
        "microbatches": 4,
        "pipeline_parallel_degree": 2,    # alias for "partitions"
        "placement_strategy": "cluster",
        "tensor_parallel_degree": 2,      # tp over 2 devices
        "ddp": True,
        "shard_optimizer_state": True
    }
}
```

**Sesuaikan skrip PyTorch pelatihan Anda **

Lihat Meng [ adaptasi skrip PyTorch pelatihan Anda ](model-parallel-extended-features-pytorch-tensor-parallelism-examples.md#model-parallel-extended-features-pytorch-tensor-and-pipeline-parallelism-script) di Paralel * isme Tensor dikombinasikan dengan bagian paralelisme pipa. * Tidak ada modifikasi tambahan yang diperlukan untuk skrip.