Optimalisasi kebijakan proksimal (PPO) - Amazon SageMaker AI

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

Optimalisasi kebijakan proksimal (PPO)

Optimalisasi kebijakan proksimal (PPO) adalah proses menggunakan beberapa model pembelajaran mesin untuk melatih dan menilai model. Model-model berikut adalah bagian dari proses PPO:

  • Model kereta atau kebijakan aktor: Model fine-tuning (SFT) yang diawasi yang disetel dengan baik dan diperbarui setiap zaman. Pembaruan dilakukan dengan petunjuk pengambilan sampel, menghasilkan penyelesaian, dan memperbarui bobot menggunakan tujuan pengganti yang terpotong. Ini membatasi perubahan log-profitabilitas per token sehingga setiap langkah kebijakan proksimal dengan yang sebelumnya, menjaga stabilitas pelatihan.

  • Model generasi aktor: Model yang menghasilkan penyelesaian atau respons yang cepat untuk dinilai oleh model penghargaan dan model kritikus. Bobot model ini diperbarui dari kereta aktor atau model kebijakan setiap zaman.

  • Model hadiah: Model dengan bobot beku yang digunakan untuk mencetak model generasi aktor.

  • Model kritikus: Model dengan bobot yang tidak dibekukan yang digunakan untuk mencetak model generasi aktor. Skor ini sering dipandang sebagai perkiraan dari total hadiah yang diterima aktor saat menghasilkan token yang tersisa.

  • Model jangkar: Model SFT dengan bobot beku yang digunakan untuk menghitung divergensi KL antara model kereta aktor dan model dasar. Model jangkar memastikan bahwa pembaruan model aktor tidak terlalu drastis dibandingkan dengan model dasar. Perubahan drastis dapat menyebabkan ketidakstabilan atau penurunan kinerja.

Data pelatihan harus dalam format JSONL di mana setiap baris berisi objek JSON tunggal yang mewakili contoh pelatihan. Inilah contohnya:

{ "turns": ["string", "string", ...], // Required "turns_to_mask": [integer, integer, ...], // Required "reward_category": "string", // Required "meta_data": {} // Optional }
  • turnsadalah array array string percakapan yang mewakili urutan dialog. Baris ini berisi prompt sistem, pesan pengguna, dan respons bot. Pesan pengguna biasanya diakhiri dengan “Bot:" untuk menunjukkan di mana output model dimulai. Misalnya, [["System prompt"], ["User: Question Bot:"], ["Bot response"]].

  • turns_to_maskadalah larik indeks berbasis 0 yang mengidentifikasi belokan mana yang seharusnya tidak menerima pembaruan gradien. Belokan bertopeng biasanya merupakan perintah sistem dan putaran pengguna. Misalnya, [0, 1, 3] menutupi prompt sistem dan pesan pengguna (pesan pertama dan ketiga).

  • reward_categoryadalah string yang mengidentifikasi aspek kinerja model apa yang akan dievaluasi. Ini digunakan untuk memilih kategori model hadiah yang sesuai selama pelatihan. Kategori hadiah tersedia untuk kategori hadiah berikut:default,,math, codingif,rag, danrai.

  • meta_dataadalah objek opsional yang berisi informasi kontekstual atau kebenaran dasar tambahan. Ini dapat mencakup pengenal, informasi sumber, atau konteks percakapan. Strukturnya fleksibel berdasarkan kebutuhan dataset Anda.

Berikut adalah contoh catatan:

{ "turns": ["You are a helpful AI assistant.", "User: What is ML? Bot:", "Machine learning is...", "User: Examples? Bot:", "Email spam filtering is..." ], "turns_to_mask": [0, 1, 3], "reward_category": "default", "meta_data": { "messages": [{ "role": "system", "content": "You are a helpful AI assistant." }, { "role": "user", "content": "What is ML?" }, { "role": "assistant", "content": "Machine learning is..." }, { "role": "user", "content": "Examples?" }, { "role": "assistant", "content": "Email spam filtering is..." } ] } }

Kerangka pemodelan hadiah mengimplementasikan optimasi multi-dimensi di seluruh tujuan kategoris yang berbeda untuk memfasilitasi konvergensi model yang kuat. Kategori hadiah harus dipilih berdasarkan tugas yang harus dioptimalkan untuk model.

Kami merekomendasikan panduan berikut untuk memilih kerangka kerja yang tepat untuk tugas Anda:

  • default: Pengoptimal tujuan umum untuk tugas percakapan standar dan interaksi dasar. Digunakan untuk percakapan umum dan diskusi, tugas menulis dasar, menjawab pertanyaan sederhana, dan pertanyaan pengetahuan non-khusus.

    Inilah contohnya:

    { "turns": ["Write a summary of climate change"], "turns_to_mask": [0], "reward_category": "default" }
  • math: Pengoptimal khusus untuk perhitungan matematika dan tugas penalaran numerik. Digunakan untuk pemecahan masalah matematika, perhitungan aritmatika, persamaan aljabar, masalah geometris, dan analisis statistik.

    Inilah contohnya:

    { "turns": ["Calculate the derivative of x²"], "turns_to_mask": [0], "reward_category": "math" }
  • coding: Kategori khusus untuk pemrograman dan kueri terkait pengembangan perangkat lunak. Digunakan untuk implementasi kode, bantuan debugging, desain algoritma, dokumentasi teknis, dan pertanyaan arsitektur sistem.

    Inilah contohnya:

    { "turns": ["Write a function to check if a string is palindrome"], "turns_to_mask": [0], "reward_category": "coding" }
  • ifKategori untuk tugas-tugas yang membutuhkan eksekusi dan step-by-step bimbingan prosedural yang tepat. Digunakan untuk prosedur multi-langkah, instruksi berurutan, dekomposisi tugas yang kompleks, dan dokumentasi proses.

    Inilah contohnya:

    { "turns": ["Provide steps to deploy a web application"], "turns_to_mask": [0], "reward_category": "if" }
  • rag: Kategori hadiah untuk tugas-tugas yang memerlukan menjawab pertanyaan berdasarkan informasi kontekstual yang diambil secara khusus. Digunakan ketika tanggapan harus diturunkan langsung dari bahan referensi yang disediakan, mensintesis konten faktual tanpa melampaui ruang lingkup informasi yang diambil, memastikan jawaban didasarkan pada konteks yang disediakan daripada pengetahuan umum.

    Inilah contohnya:

    { "turns": ["The Synthesis Report integrates findings from all six IPCC assessment cycles, revealing that global surface temperature has increased 1.1°C from 1850-1900 to 2011-2020, with human activities unequivocally identified as the cause of this warming. Alarmingly, current policies put the world on track for 3.2°C warming by 2100. The document identifies 5 key climate system "tipping points" approaching and emphasizes that greenhouse gas emissions must decline 43% by 2030 (compared to 2019 levels) to limit warming to 1.5°C. Climate-related risks will escalate with every increment of warming, with loss and damage disproportionately affecting vulnerable populations. Despite some progress, climate adaptation remains uneven with significant gaps, and financial flows continue to fall below levels needed for mitigation goals.", "What were the key findings of the latest IPCC climate report?"], "turns_to_mask": [0, 0], "reward_category": "rag" }
  • raiKategori hadiah untuk tugas-tugas yang membutuhkan penerapan prinsip-prinsip AI yang bertanggung jawab seperti keadilan, transparansi, dan etika. Digunakan untuk mengevaluasi potensi bias dalam sistem AI, memastikan pertimbangan privasi, mengatasi dilema etika, dan mempromosikan prinsip-prinsip desain inklusif.

    Inilah contohnya:

    { "turns": ["Identify potential bias concerns when developing a loan approval algorithm and suggest mitigation strategies"], "turns_to_mask": [0], "reward_category": "rai" }
Masking berbelok

Dalam kumpulan data pelatihan, turns_to_mask parameter sangat penting untuk mengontrol putaran percakapan mana yang menerima pembaruan gradien selama pelatihan. Susunan indeks ini menentukan bagian dialog mana yang harus dipelajari model versus bagian mana yang harus diperlakukan sebagai konteks saja. Masking yang tepat memastikan model mempelajari pola respons yang tepat sambil menghindari pelatihan tentang prompt sistem atau input pengguna yang dapat menurunkan kinerja.

Kami merekomendasikan panduan berikut untuk masking:

  • Selalu topeng indeks 0 - Permintaan sistem tidak boleh menerima pembaruan gradien.

  • Selalu tutupi giliran pengguna - Cegah model dari pembelajaran untuk menghasilkan input pengguna.

  • Konsistensi pola - Gunakan pola masking yang identik untuk struktur percakapan serupa, seperti (0, 1, 3, 5) untuk dialog multi-putaran.

  • Pelatihan selektif - Tutupi respons bot awal untuk memfokuskan pelatihan pada respons akhir yang lebih baik.

  • Chain-of-thought pelestarian - Hanya sistem topeng dan pengguna yang berubah saat melatih urutan penalaran.

  • Penyaringan kualitas - Masker respons asisten berkualitas rendah untuk mencegah penurunan kinerja.

  • Pengoptimalan konteks - Pastikan belokan bertopeng tidak menghapus konteks penting yang diperlukan untuk tanggapan selanjutnya.

Kunci untuk masking yang efektif adalah memantau metrik pelatihan dan kinerja validasi untuk mengidentifikasi apakah strategi masking Anda mempertahankan konteks yang diperlukan sambil memfokuskan pembaruan gradien pada output model yang diinginkan.

Aktifkan kerugian KL-divergensi

Untuk mengaktifkan kerugian KL-divergence, server jangkar perlu diaktifkan untuk menghitung divergensi kebijakan saat ini dari distribusi asli. Jenis kerugian KL perlu ditentukan, dan koefisien harus menjadi nilai selain nol. Nilai koefisien yang lebih tinggi membantu model tidak menyimpang banyak dari kebijakan asli yang menghasilkan perubahan yang lebih rendah pada kinerja umum. Nilai koefisien yang lebih rendah memungkinkan penyimpangan yang lebih besar dari kebijakan sebelumnya, yang mengarah pada kinerja metrik target yang lebih baik tetapi berdampak pada kinerja umum.

ppo_anchor: max_length: 8192 trainer: num_nodes: ${recipes.run.cm_replicas} model: global_batch_size: 32 ppo_actor_train: model: ######## Use KL in actor loss ######## kl_loss_type: low_var_kl kl_loss_coeff: 0.1 ######## Use KL in reward model ###### kl_reward_penalty_coeff: 0.1
Tingkat pembelajaran

Tingkat pembelajaran untuk kritikus dan model kebijakan dapat disesuaikan, dengan 3e-6 menjadi pilihan seimbang default. Tingkat pembelajaran yang lebih tinggi biasanya menyebabkan ketidakstabilan pelatihan, yang dapat diidentifikasi melalui lonjakan divergensi KL dan perilaku kebijakan yang tidak menentu. Tingkat pembelajaran yang lebih rendah dapat menyebabkan masalah konvergensi dan pembelajaran yang lambat, ditunjukkan oleh imbalan yang stagnan dan pembaruan kebijakan yang minimal. Pemantauan berkala terhadap divergensi KL, skor hadiah, dan kehilangan nilai membantu dalam menentukan apakah akan menyesuaikan tingkat pembelajaran selama pelatihan.

ppo_critic: model: optim: lr: 3e-6 ppo_actor_train: model: optim: lr: 3e-06
Ukuran batch global

Ukuran batch global berdampak signifikan pada kinerja PPO di Amazon Nova, dengan batch yang lebih besar umumnya meningkatkan stabilitas pelatihan dan estimasi gradien sekaligus memungkinkan pemrosesan paralel yang lebih efisien. Namun, ukuran batch yang sangat besar dapat menyebabkan pengembalian yang berkurang dan mungkin dibatasi oleh memori yang tersedia, membutuhkan keseimbangan yang cermat dengan tingkat pembelajaran dan hiperparameter lainnya.

ppo_actor_train: model: global_batch_size: 160

Parameter Amazon Nova yang tersedia untuk penyetelan dengan PPO meliputi:

  • Jalankan konfigurasi

    • actor_train_replicas: Jumlah instans komputasi yang akan digunakan untuk model kereta aktor. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 1 atau 2 replika. Amazon Nova Lite mendukung 1, 2, atau 4 replika. Amazon Nova Pro mendukung 3, 6, atau 12 replika.

    • rm_replicas: Jumlah instance komputasi yang digunakan untuk model hadiah. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.

    • cm_replicas: Jumlah instance komputasi yang digunakan untuk model kritikus. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.

    • actor_generation_replicas: Jumlah instance komputasi yang digunakan untuk generasi aktor. Nilai yang tersedia bervariasi berdasarkan model yang dipilih. Amazon Nova Micro mendukung 1 replika. Amazon Nova Lite mendukung 1 atau 2 replika. Amazon Nova Pro mendukung 1 atau 2 replika.

    • am_replicas: Jumlah instance komputasi yang digunakan untuk model jangkar. Kami menyarankan Anda menggunakan satu replika untuk ukuran model apa pun.

  • Konfigurasi kereta aktor (konfigurasi kebijakan)

    • max_steps: Jumlah maksimum langkah untuk menyempurnakan atau melatih model kereta aktor. Di sini, satu langkah didefinisikan sebagai peluncuran, diikuti dengan melatih model kereta aktor dengan global_batch_size jumlah sampel. Satu zaman didefinisikan sebagaiglobal_batch_size * trajectory_buffer_scale.

      Nilai yang dipilih di sini akan bervariasi berdasarkan kasus penggunaan dan kompleksitas kumpulan data Anda. Sebaiknya mulai dengan 65 zaman atau 520 langkah, yang merupakan jumlah zaman dikalikan dengan nilai. trajectory_buffer_scale Namun, beberapa tugas membutuhkan waktu pelatihan PPO yang lebih lama untuk mencapai kinerja yang sama.

      Untuk PPO, metrik pelatihan, seperti skor model hadiah jenuh dan panjang tindakan rata-rata dari konsol ml-flow, dapat membantu mengidentifikasi poin optimal untuk evaluasi.

    • actor_model_max_length: Panjang maksimum data input yang dikirim ke komponen pembangkit aktor untuk menghasilkan penyelesaian.

    • reward_model_max_length: Panjang maksimum data input yang dikirim ke server hadiah untuk menyelesaikan skor.

    • trajectory_buffer_scale: Buffer ini mewakili jumlah peluncuran yang dihasilkan menggunakan model kereta aktor lama (kebijakan) sebelum memperbarui bobot dan menghasilkan peluncuran baru. Nilai yang didukung adalah 1, 2, 4, 8, dan 16.

      Jika trajectory_buffer_scale 1, maka pelatihan adalah pada kebijakan. Itu berarti peluncuran dihasilkan dengan bobot model terbaru, tetapi throughput menderita. Jika 16, maka modelnya sedikit di luar kebijakan tetapi throughputnya lebih tinggi. Kami merekomendasikan memulai dengan 8 untuk setiap model.

    • kl_reward_penalty_coeff: Ini adalah istilah divergensi KL yang memastikan pembaruan tidak terlalu drastis dan kebijakan tidak disusun dari model dasar atau SFT.

    • kl_loss_coeff: Nilai ini mengontrol seberapa besar penalti divergensi KL mempengaruhi keseluruhan tujuan pelatihan di PPO.

    • kl_loss_type: Nilai ini menentukan cara menghitung divergensi antara distribusi kebijakan saat ini dan referensi. Yang kl_loss_types tersedia adalah kl (Divergensi KL Standar), mse (Kesalahan kuadrat rata-rata), abs (Perbedaan absolut antara probabilitas log), dan low_var_kl (perkiraan KL varians rendah).

    • model.clip_ratio: Rasio klip aktor (ε) di PPO adalah hiperparameter yang membatasi seberapa banyak kebijakan dapat berubah selama setiap pembaruan.

    • model.optim.lr: Tingkat pembelajaran yang digunakan untuk pelatihan kehilangan model pengganti dalam model aktor.

    • model.lam: Bagian dari proses estimasi keuntungan. Lebih tinggi λ memberi bobot lebih pada imbalan jangka panjang tetapi dengan varians yang lebih tinggi, sedangkan λ yang lebih rendah lebih berfokus pada imbalan langsung dengan varians yang lebih rendah tetapi lebih bias.

    • model.ent_coeff: Kehilangan entropi dalam PPO mendorong eksplorasi dengan menghukum kebijakan ketika menjadi terlalu deterministik (yaitu, selalu memilih tindakan yang sama dengan keyakinan tinggi).

  • Konfigurasi model hadiah

    • global_batch_size: Ukuran batch untuk menilai penyelesaian menggunakan model hadiah. Jika ppo_actor_train.model.global_batch_size lebih besar darippo_reward.model.global_batch_size, mereka diproses dalam beberapa batch. Perhatikan bahwa ppo_actor_train.model.global_batch_size % ppo_reward.model.global_batch_size harus sama dengan 0.

    • max_length: Panjang konteks maksimum dari model hadiah. Ini harus sama denganppo_actor_train.model.max_length.

  • Konfigurasi model kritikus

    • global_batch_size: Ukuran batch dari nilai model kritikus. Model kritikus akan memberikan perkiraan nilai untuk setiap token dalam tanggapan yang diberikan oleh model aktor. Ukuran batch digunakan untuk inferensi dan pelatihan.

      Perhatikan bahwa ppo_actor_train.model.global_batch_size % ppo_critic.model.global_batch_size harus sama dengan 0 danppo_actor_train.model.global_batch_size * ppo_actor_train.model.trajectory_buffer_size % ppo_critic.model.global_batch_size == 0.

    • max_length: Panjang konteks maksimum model kritikus. Ini harus sama denganppo_actor_train.model.max_length.

    • model.optim.lr: Tingkat pembelajaran yang digunakan untuk pelatihan kehilangan model pengganti dalam model aktor.

  • Konfigurasi model jangkar

    • global_batch_size: Ukuran batch untuk menghasilkan logp dari SFT beku atau model jangkar. Perhatikan bahwa ppo_actor_train.model.global_batch_size % ppo_anchor.model.global_batch_size harus sama dengan 0.

    • max_length: Panjang konteks maksimum dari model hadiah. Ini harus sama denganppo_actor_train.model.max_length.

  • Konfigurasi model generasi aktor

    • actor_model_max_length: Panjang konteks maksimum komponen generasi model aktor. Ini harus sama denganppo_actor_train.model.max_length.

Resep PPO

Berikut ini adalah resep untuk PPO.

## Run config run: name: ndry-ppo-pro model_type: amazon.nova-pro-v1:0:300k model_name_or_path: nova-pro/prod data_s3_path: s3://testing/train.jsonl # Your training data S3 path actor_train_replicas: 6 # Actor train model replicas rm_replicas: 1 # Reward model replicas cm_replicas: 1 # Critic model replicas actor_generation_replicas: 2 # Actor generation model replicas am_replicas: 1 # Anchor model replicas ## Training config for each PPO component ppo_reward: max_length: 8192 # model architecture max length trainer: num_nodes: ${recipes.run.rm_replicas} model: global_batch_size: 16 ppo_critic: max_length: 8192 trainer: num_nodes: ${recipes.run.cm_replicas} model: global_batch_size: 16 optim: lr: 3e-6 name: distributed_fused_adam adam_w_mode: true eps: 1e-06 weight_decay: 0.0 betas: - 0.9 - 0.999 ppo_anchor: max_length: 8192 trainer: num_nodes: ${recipes.run.am_replicas} model: global_batch_size: 16 ppo_actor_generation: actor_model_max_length: 8192 trainer: num_nodes: ${recipes.run.actor_generation_replicas} ppo_actor_train: max_length: 8192 max_steps: 520 # Stopping criteria Desired epoch num * trajectory_buffer_scale actor_model_max_length: 8192 # truncate input data to max length reward_model_max_length: 8192 # truncate input data to max length trajectory_buffer_scale: 8 trainer: num_nodes: ${recipes.run.actor_train_replicas} model: global_batch_size: 160 ent_coeff: 0 clip_ratio: 0.2 lam: 1 kl_loss_coeff: 0.0 kl_loss_type: low_var_kl kl_reward_penalty_coeff: 0.0 hidden_dropout: 0.0 # Dropout probability for hidden state transformer. attention_dropout: 0.0 # Dropout probability in the attention layer. ffn_dropout: 0.0 # Dropout probability in the feed-forward layer. optim: lr: 3e-06 name: distributed_fused_adam # only this one is available for p0. adam_w_mode: true eps: 1e-08 weight_decay: 0.0 betas: - 0.9 - 0.999
Batasan

PPO memiliki batasan sebagai berikut:

  • Pos pemeriksaan menengah tidak disimpan untuk evaluasi dan Anda tidak dapat melanjutkan dari pos pemeriksaan perantara. Hanya pos pemeriksaan terakhir yang disimpan.

  • Kumpulan data multimodal tidak didukung.

  • Pekerjaan pelatihan tidak dihentikan secara otomatis. Anda harus menghentikan pekerjaan menggunakan HyperPod CLI.

  • MLflow logging tidak didukung.

  • Metrik pelatihan kritikus tidak didukung pada. TensorBoard

  • Untuk menyesuaikan hyperparameters, ikuti panduan di Memilih hyperparameters.