Bagikan melalui


Modifikasi model dengan penyesuaian khusus (versi klasik)

Sedang menampilkan:Versi portal Foundry (klasik) - Beralih ke versi portal Foundry yang baru

Pelajari cara menyempurnakan model di Microsoft Foundry untuk himpunan data dan kasus penggunaan Anda. Penyempurnaan memungkinkan:

  • Hasil berkualitas lebih tinggi daripada apa yang bisa Anda dapatkan hanya dari rekayasa yang cepat.
  • Kemampuan untuk melatih lebih banyak contoh daripada yang dapat dimasukkan ke dalam batas konteks permintaan model.
  • Penghematan token akibat petunjuk yang lebih pendek.
  • Permintaan latensi yang lebih rendah, terutama saat Anda menggunakan model yang lebih kecil.

Berbeda dengan pembelajaran beberapa bidikan, penyempurnaan meningkatkan model dengan melatih lebih banyak contoh daripada yang sesuai dengan perintah. Karena bobot beradaptasi dengan tugas Anda, Anda menyertakan lebih sedikit contoh atau instruksi. Mengurangi jumlah yang disertakan dapat mengurangi token per panggilan dan berpotensi menurunkan biaya serta latensi.

Kami menggunakan adaptasi peringkat rendah (LoRA) untuk menyempurnakan model dengan cara yang mengurangi kompleksitasnya tanpa memengaruhi performanya secara signifikan. Metode ini bekerja dengan mendekatkan matriks peringkat tinggi asli dengan peringkat lebih rendah. Menyempurnakan subset parameter penting yang lebih kecil selama fase pelatihan yang diawasi membuat model lebih mudah dikelola dan efisien. Bagi pengguna, ini juga membuat pelatihan lebih cepat dan lebih terjangkau daripada teknik lain.

Dalam artikel ini, Anda akan mempelajari cara:

  • Pilih himpunan data dan format yang sesuai untuk penyempurnaan.
  • Mulai pekerjaan penyesuaian, pantau status, dan ambil hasil.
  • Menyebarkan dan mengevaluasi model yang disempurnakan.
  • Bersihkan sumber daya Anda ketika Anda tidak lagi membutuhkannya.

Ada dua pengalaman penyempurnaan unik di portal Microsoft Foundry:

  • Hub atau tampilan proyek: Mendukung model penyempurnaan dari beberapa penyedia, seperti Azure OpenAI, Meta Llama, dan Microsoft Phi.
  • Pandangan terpusat Azure OpenAI: Hanya mendukung penyetelan model Azure OpenAI, tetapi memiliki dukungan untuk fitur tambahan seperti integrasi pratinjau Weights & Biases (W&B). Jika Anda hanya menyempurnakan Azure model OpenAI, kami merekomendasikan pengalaman ini.

Penting

Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Prasyarat

Model yang didukung

Untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan, lihat artikel tentang model.

Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Tinjau alur kerja untuk portal Foundry

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan portal Foundry:

  1. Siapkan data pelatihan dan validasi Anda.
  2. Gunakan dialog Buat model yang disempurnakan di portal Foundry untuk melatih model kustom Anda.
    1. Pilih metode pelatihan.
    2. Pilih model dasar.
    3. Pilih jenis pelatihan Anda.
    4. Pilih data pelatihan Anda.
    5. Secara opsional, pilih data validasi Anda.
    6. Secara opsional, konfigurasikan parameter tugas untuk pekerjaan penyempurnaan Anda.
    7. Secara opsional, aktifkan penyebaran otomatis untuk model kustom yang dihasilkan.
    8. Tinjau pilihan Anda dan latih model kustom baru Anda.
  3. Periksa status model kustom yang telah dihaluskan secara khusus.
  4. Sebarkan model kustom Anda untuk digunakan.
  5. Gunakan model kustom Anda.
  6. Secara opsional, analisis model kustom Anda untuk performa dan kecocokan.

Menyiapkan data pelatihan dan validasi Anda

Himpunan data pelatihan dan validasi Anda terdiri dari contoh input dan output untuk performa model yang Anda inginkan.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Ini juga harus diformat dalam format percakapan yang digunakan API Penyelesaian Obrolan .

Selain format JSONL, file data pelatihan dan validasi harus dikodekan dalam UTF-8 dan menyertakan tanda urutan byte (BOM). Setiap file harus berukuran kurang dari 512 MB.

Kami umumnya menyarankan agar Anda menggunakan instruksi dan perintah yang Anda temukan berfungsi paling baik di setiap contoh pelatihan. Pendekatan ini membantu Anda mendapatkan hasil terbaik, terutama jika Anda memiliki kurang dari seratus contoh.

Contoh format file

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

Format berkas percakapan berbalasan untuk Azure OpenAI

Beberapa putaran percakapan dalam satu baris file pelatihan JSONL Anda telah didukung. Untuk melewati penyesuaian pada pesan asisten tertentu, tambahkan pasangan kunci/nilai opsional weight. Saat ini, weight dapat diatur ke 0 atau 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Penyelesaian percakapan dengan penglihatan

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

Pertimbangan ukuran himpunan data

Semakin banyak contoh pelatihan yang Anda miliki, semakin baik. Pekerjaan penyempurnaan tidak akan dilanjutkan tanpa setidaknya 10 contoh pelatihan, tetapi jumlah sekecil itu tidak cukup untuk memengaruhi respons model secara nyata. Praktik terbaik untuk penyempurnaan yang berhasil adalah menyediakan ratusan, jika bukan ribuan, contoh pelatihan. Sebaiknya Anda mulai dengan 50 contoh yang dibuat dengan baik.

Secara umum, menggandakan ukuran himpunan data dapat menyebabkan peningkatan linier dalam kualitas model. Tetapi perlu diingat bahwa contoh berkualitas rendah dapat berdampak negatif pada performa. Jika Anda melatih model pada sejumlah besar data internal tanpa terlebih dahulu memangkas himpunan data hanya untuk contoh berkualitas tertinggi, model Anda mungkin berkinerja lebih buruk dari yang diharapkan.

Membuat model yang disempurnakan

Portal Foundry menyediakan dialog Buat model yang disempurnakan sehingga Anda dapat membuat dan melatih model yang disempurnakan untuk sumber daya Azure Anda di satu tempat.

  1. Buka portal Foundry dan masuk dengan kredensial yang memiliki akses ke sumber daya OpenAI Azure Anda. Selama alur kerja masuk, pilih direktori yang sesuai, langganan Azure, dan sumber daya OpenAI Azure.

  2. Buka Alat>Pengaturan, lalu pilih Atur model.

    Cuplikan layar yang memperlihatkan pilihan untuk membuat model kustom di portal Foundry.

  3. Pilih model untuk menyempurnakan, lalu pilih Berikutnya.

    Cuplikan layar pemilihan model di portal Foundry.

    Dialog Buat model yang disempurnakan muncul.

    Cuplikan layar dialog untuk membuat model yang disempurnakan.

Pilih metode pelatihan Anda

Langkah pertama adalah mengonfirmasi pilihan model dan metode pelatihan Anda. Tidak semua model mendukung semua metode pelatihan.

Saat memilih model, Anda juga dapat memilih model yang sebelumnya disempurnakan, seperti yang dijelaskan nanti di artikel ini.

Memilih jenis pelatihan Anda

Foundry menawarkan tiga tingkat pelatihan untuk memenuhi kebutuhan pelanggan.

Tingkat pelatihan standar

Tingkat Standar menyediakan kapasitas khusus untuk penyempurnaan dengan performa dan SLA yang dapat diprediksi. Ini ideal untuk beban kerja produksi yang memerlukan throughput yang dijamin.

Tingkat pelatihan Standar Global

Tingkat Pelatihan Global memperluas jangkauan kustomisasi model dengan harga penawaran Global lainnya yang lebih terjangkau . Tidak menyediakan residensi data. Jika Anda memerlukan residensi data, lihat daftar wilayah yang tersedia untuk model yang Anda pilih.

Data pelatihan Anda dan bobot model yang dihasilkan mungkin disalin ke wilayah Azure lain.

Saat Anda menggunakan tingkat ini, Anda dapat:

  • Latih model OpenAI terbaru dari lebih dari selusin wilayah OpenAI Azure.
  • Dapatkan manfaat dari tingkat pelatihan per token yang lebih rendah dibandingkan dengan tingkat Standar.

Tingkat pelatihan pengembang

Tingkat Pengembang adalah opsi hemat biaya yang menggunakan kapasitas yang tidak terpakai untuk beban kerja yang tidak mendesak atau eksplorasi. Pekerjaan di tingkat ini mungkin didahului dan dilanjutkan nanti, sehingga ideal untuk eksperimen dan kasus penggunaan yang sensitif terhadap biaya.

Pilih data pelatihan Anda

Langkah selanjutnya adalah memilih data pelatihan yang sudah disiapkan atau mengunggah data pelatihan baru yang disiapkan untuk digunakan saat Anda menyesuaikan model dengan memilih Tambahkan data pelatihan.

Dialog Data pelatihan menampilkan himpunan data yang sudah ada dan diunggah sebelumnya. Ini juga menyediakan opsi untuk mengunggah data pelatihan baru.

Cuplikan layar panel untuk data pelatihan di portal Foundry

  • Jika data pelatihan Anda sudah diunggah ke layanan, pilih File dari sumber daya AI tersambung. Kemudian pilih file dari menu tarik-turun.

  • Untuk mengunggah data pelatihan baru, gunakan salah satu opsi berikut:

    • Pilih Unggah file untuk mengunggah data pelatihan dari file lokal.
    • Pilih Azure blob atau lokasi web bersama lainnya untuk mengimpor data pelatihan dari Azure Blob Storage atau lokasi web bersama lainnya.

Untuk file data besar, kami sarankan Anda mengimpor dari Blob Storage. File besar dapat menjadi tidak stabil saat Anda mengunggahnya melalui formulir multibagian karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan. Untuk informasi selengkapnya tentang Blob Storage, lihat Apa yang Azure Blob Storage?.

Pilih data validasi Anda (opsional)

Jika Anda memiliki himpunan data validasi, pilih Tambahkan data pelatihan. Anda dapat memilih data validasi yang sudah disiapkan atau mengunggah data validasi baru yang disiapkan untuk digunakan saat Menyesuaikan model Anda.

Dialog Data validasi menampilkan himpunan data pelatihan dan validasi yang sudah ada dan diunggah sebelumnya. Ini juga menyediakan opsi untuk mengunggah data validasi baru.

Cuplikan layar panel untuk data validasi di portal Foundry.

  • Jika data validasi Anda sudah diunggah ke layanan, pilih Pilih himpunan data. Kemudian pilih file dari menu tarik-turun.

  • Untuk mengunggah data validasi baru, gunakan salah satu opsi berikut:

    • Pilih File lokal untuk mengunggah data validasi dari file lokal.
    • Pilih Azure blob atau lokasi web bersama lainnya untuk mengimpor data validasi dari Azure Blob Storage atau lokasi web bersama lainnya.

Untuk file data besar, kami sarankan Anda mengimpor dari Blob Storage. File besar dapat menjadi tidak stabil saat Anda mengunggahnya melalui formulir multibagian karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan.

Buat model Anda dapat diidentifikasi (opsional)

Kami menyarankan agar Anda menyertakan suffix parameter untuk lebih mudah membedakan antara iterasi model yang disempurnakan. Parameter suffix mengambil string hingga 18 karakter dan digunakan untuk memberi nama model yang disempurnakan yang dihasilkan.

Mengonfigurasi parameter pelatihan (opsional)

Anda dapat memberikan seed yang bersifat opsional dan mengatur hiperparameter tambahan.

Benih mengontrol reproduksi pekerjaan. Memberikan seed dan parameter pekerjaan yang sama seharusnya menghasilkan hasil yang sama, tetapi mungkin berbeda dalam kasus yang jarang terjadi. Jika Anda tidak menentukan seed, maka akan dihasilkan satu seed secara acak untuk Anda.

Cuplikan layar area untuk mengonfigurasi seed dan hyperparameter di portal Foundry.

Hiperparameter berikut tersedia untuk penyetelan melalui portal Foundry:

Nama Tipe Deskripsi
Ukuran batch Integer Ukuran batch yang akan digunakan untuk pelatihan. Ukuran batch adalah jumlah contoh pelatihan yang digunakan untuk melatih satu pass maju dan mundur. Secara umum, kami menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar.

Nilai default dan nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varian yang lebih rendah.
Pengali laju pembelajaran Angka Pengali laju pembelajaran yang digunakan untuk pelatihan. Tingkat pembelajaran penyempurnaan adalah tingkat pembelajaran asli yang digunakan untuk pra-pelatihan, dikalikan dengan nilai ini.

Tingkat pembelajaran yang lebih besar cenderung berkinerja lebih baik dengan ukuran batch yang lebih besar. Sebaiknya bereksperimen dengan nilai dalam rentang 0,02 hingga 0,2 untuk melihat apa yang menghasilkan hasil terbaik. Tingkat pembelajaran yang lebih kecil dapat berguna untuk menghindari overfitting.
Jumlah epoch Integer Jumlah epoch yang diperlukan untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.

Aktifkan penyebaran otomatis (opsional)

Untuk menghemat waktu, Anda dapat mengaktifkan penyebaran otomatis secara opsional untuk model yang dihasilkan. Jika pelatihan berhasil diselesaikan, model disebarkan sesuai dengan jenis penyebaran yang dipilih. Nama penyebaran didasarkan pada nama unik yang dihasilkan untuk model khusus Anda serta akhiran opsional yang mungkin telah Anda berikan sebelumnya.

Cuplikan layar tombol untuk penyebaran otomatis di portal Foundry.

Nota

Hanya penyebaran Standar Global dan Pengembang yang saat ini didukung untuk penyebaran otomatis. Tidak satu pun opsi ini memberikan residensi data. Untuk informasi selengkapnya, lihat dokumentasi untuk jenis penyebaran.

Tinjau pilihan Anda dan latih model Anda

Tinjau pilihan Anda, lalu pilih Kirim untuk mulai melatih model baru yang disempurnakan.

Periksa status model kustom Anda

Setelah Anda mengirimkan tugas penyetelan Anda, akan muncul halaman dengan detail mengenai model Anda yang telah disempurnakan. Anda dapat menemukan status dan informasi selengkapnya tentang model yang disempurnakan di halaman Penyempurnaan di portal Foundry.

Pekerjaan Anda mungkin diantrekan di belakang pekerjaan lain dalam sistem. Melatih model Anda dapat memakan waktu beberapa menit atau jam, tergantung pada model dan ukuran himpunan data.

Hasilkan titik pemeriksaan

Ketika setiap epoch pelatihan selesai, titik pemeriksaan dihasilkan. Titik pemeriksaan adalah versi model yang berfungsi penuh yang dapat disebarkan dan digunakan sebagai model target untuk pekerjaan penyempurnaan berikutnya.

Titik pemeriksaan dapat sangat berguna, karena mungkin menyediakan rekam jepret sebelum overfitting. Ketika pekerjaan penyempurnaan selesai, Anda memiliki tiga versi terbaru dari model yang tersedia untuk disebarkan. Anda dapat menyalin titik pemeriksaan antara sumber daya dan langganan melalui REST API.

Jeda dan lanjutkan

Anda dapat melacak kemajuan dalam kedua tampilan penyempurnaan portal Foundry. Pekerjaan Anda melewati status yang sama dengan pekerjaan penyempurnaan normal (Diantrekan, Berjalan, Berhasil).

Anda juga dapat meninjau file hasil saat pelatihan berjalan, untuk mengintip kemajuan dan apakah pelatihan Anda berjalan seperti yang diharapkan.

Selama pelatihan, Anda dapat melihat metrik dan menjeda pekerjaan sesuai kebutuhan. Menjeda dapat berguna jika metrik tidak berkonvergensi atau jika Anda merasa bahwa model tidak belajar dengan kecepatan yang tepat. Saat Anda menjeda pekerjaan pelatihan, titik pemeriksaan yang dapat disebarkan dibuat setelah evaluasi keselamatan selesai. Titik pemeriksaan ini tersedia untuk Anda sebarkan dan gunakan untuk inferensi, atau Anda dapat melanjutkan pekerjaan untuk menyelesaikannya. Operasi jeda hanya berlaku untuk tugas yang telah dilatih setidaknya selama satu langkah dan berada dalam status Berjalan.

Cuplikan layar penyempurnaan penguatan dengan pekerjaan yang sedang berjalan.

Menganalisis model khusus Anda

Azure OpenAI melampirkan file hasil bernama results.csv ke setiap pekerjaan penyempurnaan setelah selesai. Anda dapat menggunakan file hasil untuk menganalisis performa pelatihan dan validasi model kustom Anda. ID file untuk file hasil tercantum untuk setiap model kustom di kolom Id file Hasil pada panel Model portal Foundry. Anda dapat menggunakan ID file untuk mengidentifikasi dan mengunduh file hasil dari panel File data portal Foundry.

File hasilnya adalah sebuah CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan selama proses fine-tuning. File hasil berisi kolom berikut:

Nama kolom Deskripsi
step Jumlah langkah pelatihan. Langkah pelatihan mewakili satu pass, maju dan mundur, pada batch data pelatihan.
train_loss Kerugian untuk batch pelatihan.
train_mean_token_accuracy Persentase token pada batch pelatihan yang diprediksi dengan benar oleh model.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Nilai kerugian untuk batch validasi.
validation_mean_token_accuracy Persentase token dalam batch validasi yang diprediksi model dengan benar.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
full_valid_loss Kerugian validasi dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, kerugian harus berkurang.
full_valid_mean_token_accuracy Akurasi token rata-rata yang valid dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, akurasi token akan meningkat.

Anda juga dapat melihat data dalam file results.csv Anda sebagai grafik di portal Foundry. Saat Anda memilih tautan untuk model terlatih Anda, tiga bagan muncul: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data muncul pada plot yang sama.

Perhatikan agar kerugian Anda menurun seiring berjalannya waktu, dan akurasi Anda meningkat. Jika data pelatihan dan validasi Anda berbeda, Anda mungkin mengalami overfitting. Coba pelatihan dengan lebih sedikit epoch atau pengali tingkat pembelajaran yang lebih kecil.

Mengimplementasikan model yang telah disempurnakan

Ketika Anda puas dengan metrik dari tugas penyetelan Anda, atau Anda hanya ingin beralih ke inferensi, Anda harus menerapkan model.

Jika Anda menyebarkan untuk validasi lebih lanjut, pertimbangkan untuk menyebarkan pengujian dengan menggunakan penyebaran Pengembang.

Jika Anda siap untuk melakukan penyebaran ke lingkungan produksi atau Anda memiliki kebutuhan penempatan data tertentu, ikuti panduan penyebaran.

Menggunakan model yang telah diterapkan dan disempurnakan

Setelah menyebarkan model yang disempurnakan, Anda dapat menggunakannya seperti model lain yang sudah disebarkan. Anda dapat menggunakan ruang uji coba di Foundry untuk bereksperimen dengan penyebaran baru Anda. Anda juga dapat menggunakan REST API untuk memanggil model yang disempurnakan dari aplikasi Anda sendiri. Anda bahkan dapat mulai menggunakan model baru yang disempurnakan ini dalam alur prompt Anda untuk membangun aplikasi AI generatif Anda.

Nota

Untuk model obrolan, pesan sistem yang Anda gunakan untuk memandu model yang disempurnakan (baik disebarkan atau tersedia untuk pengujian di taman bermain) harus sama dengan pesan sistem yang Anda gunakan untuk pelatihan. Jika Anda menggunakan pesan sistem yang berbeda, model mungkin tidak berfungsi seperti yang diharapkan.

Melakukan penyempurnaan berkelanjutan

Setelah membuat model yang disempurnakan, Anda mungkin ingin terus menyempurnakan model dari waktu ke waktu melalui penyempurnaan lebih lanjut. Penyempurnaan berkelanjutan adalah proses berulang untuk memilih model yang sudah disempurnakan sebagai model dasar dan menyempurnakannya lebih lanjut pada serangkaian contoh pelatihan baru.

Untuk melakukan penyempurnaan pada model yang sebelumnya Disempurnakan, Anda menggunakan proses yang sama yang dijelaskan dalam Membuat model yang disempurnakan. Tetapi alih-alih menentukan nama model dasar generik, Anda menentukan model yang sudah disempurnakan. Model kustom yang disempurnakan terlihat seperti gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft.

Cuplikan layar antarmuka untuk membuat model kustom, dengan model yang disempurnakan disorot.

Bersihkan penerapan, model kustom, dan file pelatihan Anda

Saat Anda tidak lagi memerlukan model kustom, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika perlu.

Hapus penerapan model Anda

Penting

Setelah Anda menyebarkan model yang disesuaikan, jika kapan saja penyebaran tetap tidak aktif selama lebih dari 15 hari, penyebaran akan dihapus. Penyebaran model yang disesuaikan tidak aktif jika model disebarkan lebih dari 15 hari yang lalu dan tidak ada penyelesaian obrolan atau panggilan API respons yang dilakukan padanya selama periode 15 hari berkelanjutan.

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model dasar yang telah dikustomisasi. Model yang disesuaikan dapat disebarkan ulang kapan saja.

Seperti yang dijelaskan dalam Azure OpenAI dalam harga Microsoft Foundry Models, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian obrolan atau panggilan API respons dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat Plan dan kelola biaya untuk Azure OpenAI.

Anda dapat menghapus penyebaran untuk model kustom Anda di panel Penyebaran di portal Foundry. Pilih penyebaran yang akan dihapus, lalu pilih Hapus.

Menghapus model kustom Anda

Anda bisa menghapus model kustom pada panel Model di portal Foundry. Pilih model kustom yang akan dihapus dari tab Model yang dikustomisasi , lalu pilih Hapus.

Nota

Anda tidak dapat menghapus model kustom jika memiliki penyebaran yang sudah ada. Anda harus menghapus penyebaran model sebelum dapat menghapus model kustom Anda.

Menghapus file pelatihan Anda

Anda dapat secara opsional menghapus file pelatihan dan validasi yang Anda unggah untuk pelatihan, bersama dengan file hasil yang dihasilkan selama pelatihan, pada panel Data Manajemen>+ indeks di portal Foundry. Pilih file yang akan dihapus, lalu pilih Hapus.

Prasyarat

Model yang didukung

Untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan, lihat artikel tentang model.

Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Meninjau alur kerja untuk SDK Python

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan SDK Python dengan Azure OpenAI:

  1. Siapkan data pelatihan dan validasi Anda.
  2. Pilih model dasar.
  3. Unggah data pelatihan Anda.
  4. Latih model baru yang disesuaikan.
  5. Periksa status model yang telah disesuaikan.
  6. Sebarkan model yang disesuaikan untuk digunakan.
  7. Gunakan model yang disesuaikan.
  8. Secara opsional, analisis model yang disesuaikan untuk kinerja dan kesesuaian.

Menyiapkan data pelatihan dan validasi Anda

Himpunan data pelatihan dan validasi Anda terdiri dari contoh input dan output untuk performa model yang Anda inginkan.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Ini juga harus diformat dalam format percakapan yang digunakan API Penyelesaian Obrolan .

Selain format JSONL, file data pelatihan dan validasi harus dikodekan dalam UTF-8 dan menyertakan tanda urutan byte (BOM). Setiap file harus berukuran kurang dari 512 MB.

Jika Anda menginginkan panduan langkah demi langkah tentang penyempurnaan gpt-4o-mini-2024-07-18, lihat tutorial penyempurnaan Azure OpenAI.

Contoh format file

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish, isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

Format file percakapan bergilir

Beberapa putaran percakapan dalam satu baris file pelatihan JSONL Anda telah didukung. Untuk melewati penyesuaian pada pesan asisten tertentu, tambahkan pasangan kunci/nilai opsional weight. Saat ini, weight dapat diatur ke 0 atau 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Penyelesaian percakapan dengan penglihatan

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

Membuat himpunan data pelatihan dan validasi Anda

Semakin banyak contoh pelatihan yang Anda miliki, semakin baik. Pekerjaan penyempurnaan tidak akan dilanjutkan tanpa setidaknya 10 contoh pelatihan, tetapi jumlah sekecil itu tidak cukup untuk memengaruhi respons model secara nyata. Praktik terbaik untuk penyempurnaan yang berhasil adalah menyediakan ratusan, jika bukan ribuan, contoh pelatihan.

Secara umum, menggandakan ukuran himpunan data dapat menyebabkan peningkatan linier dalam kualitas model. Tetapi perlu diingat bahwa contoh berkualitas rendah dapat berdampak negatif pada performa. Jika Anda melatih model pada sejumlah besar data internal tanpa terlebih dahulu memangkas himpunan data hanya untuk contoh berkualitas tertinggi, model Anda mungkin berkinerja lebih buruk dari yang diharapkan.

Mengunggah data pelatihan Anda

Langkah selanjutnya adalah memilih data pelatihan yang sudah disiapkan atau mengunggah data pelatihan baru yang disiapkan untuk digunakan saat Anda menyesuaikan model Anda. Setelah menyiapkan data pelatihan, Anda dapat mengunggah file ke layanan. Ada dua cara untuk mengunggah data pelatihan:

Untuk file data besar, kami sarankan Anda mengimpor dari Blob Storage. File besar dapat menjadi tidak stabil saat Anda mengunggahnya melalui formulir multibagian karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan. Untuk informasi selengkapnya tentang Blob Storage, lihat Apa yang Azure Blob Storage?.

Contoh Python berikut mengunggah file pelatihan dan validasi lokal dengan menggunakan SDK Python, dan mengambil ID file yang dikembalikan:

import os
from openai import OpenAI

# Load the OpenAI client
client = OpenAI(
  api_key = os.getenv("AZURE_OPENAI_API_KEY"),  
  base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)

# Upload the training and validation dataset files to Microsoft Foundry with the SDK.
training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

training_response = client.files.create(file=open(training_file_name, "rb"), purpose="fine-tune")
validation_response = client.files.create(file=open(validation_file_name, "rb"), purpose="fine-tune")
training_file_id = training_response.id
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Membuat model yang dikustomisasi

Setelah mengunggah file pelatihan dan validasi, Anda siap untuk memulai pekerjaan penyempurnaan.

Kode Python berikut menunjukkan contoh cara membuat pekerjaan penyempurnaan baru dengan menggunakan SDK Python:

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-4.1-2025-04-14", # Enter the base model name.
    suffix="my-model", # Custom suffix for naming the resulting model. Note that in Microsoft Foundry, the model can't contain dot/period characters.
    seed=105, # Seed parameter controls reproducibility of the fine-tuning job. If you don't specify a seed, one is generated automatically.
    extra_body={ "trainingType": "GlobalStandard" } # Change this value to your preferred training type. Other options are `Standard` and `Developer`.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.

print("Job ID:", response.id)
print(response.model_dump_json(indent=2))

Nota

Sebaiknya gunakan tingkat Standar Global untuk jenis pelatihan, karena menawarkan penghematan biaya dan menggunakan kapasitas global untuk waktu antrean yang lebih cepat. Namun, itu menyalin data dan bobot di luar wilayah sumber daya saat ini. Jika residensi data adalah persyaratan, gunakan model yang mendukung pelatihan tingkat Standar.

Anda juga dapat meneruskan parameter opsional tambahan, seperti hyperparameter, untuk mengambil kontrol yang lebih besar dari proses penyempurnaan. Untuk pelatihan awal, sebaiknya gunakan default otomatis yang ada tanpa menentukan parameter ini.

Hyperparameter yang saat ini didukung untuk penyempurnaan yang diawasi adalah:

Nama Tipe Deskripsi
batch_size Integer Ukuran batch yang akan digunakan untuk pelatihan. Ukuran batch adalah jumlah contoh pelatihan yang digunakan untuk melatih satu pass maju dan mundur. Secara umum, kami menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar.

Nilai default dan nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varian yang lebih rendah.
learning_rate_multiplier Angka Pengali laju pembelajaran yang digunakan untuk pelatihan. Tingkat pembelajaran penyempurnaan adalah tingkat pembelajaran asli yang digunakan untuk pra-pelatihan, dikalikan dengan nilai ini.

Tingkat pembelajaran yang lebih besar cenderung berkinerja lebih baik dengan ukuran batch yang lebih besar. Sebaiknya bereksperimen dengan nilai dalam rentang 0.02 untuk 0.2 melihat apa yang menghasilkan hasil terbaik. Tingkat pembelajaran yang lebih kecil dapat berguna untuk menghindari overfitting.
n_epochs Integer Jumlah epoch yang diperlukan untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.
seed Integer Benih yang mengontrol reproduksi pekerjaan. Memberikan seed dan parameter pekerjaan yang sama seharusnya menghasilkan hasil yang sama, tetapi mungkin berbeda dalam kasus yang jarang terjadi. Jika Anda tidak menentukan seed, satu akan dibuat untuk Anda.

Untuk mengatur hyperparameter kustom dengan versi 1.x dari OpenAI Python API, berikan sebagai bagian dari method:

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-4.1-2025-04-14",
  suffix="my-model",
  seed=105,
  method={
    "type": "supervised", # In this case, the job is using supervised fine-tuning.
    "supervised": {
      "hyperparameters": {
        "n_epochs": 2
      }
    }
  },
  extra_body={ "trainingType": "GlobalStandard" }
)

Untuk mempelajari tentang hyperparameter yang didukung untuk metode penyesuaian lainnya, lihat panduan untuk pengoptimalan preferensi langsung dan panduan untuk penyempurnaan penguatan.

Jenis pelatihan

Pilih tingkat pelatihan berdasarkan kasus penggunaan dan anggaran Anda:

  • Standar: Pelatihan terjadi di wilayah sumber daya Foundry saat ini dan memberikan jaminan untuk residensi data. Ideal untuk beban kerja di mana data harus tetap berada di wilayah tertentu.

  • Global: Memberikan harga yang lebih terjangkau dibandingkan dengan Standar dengan menggunakan kapasitas di luar wilayah Anda saat ini. Data dan bobot disalin ke wilayah tempat pelatihan terjadi. Ideal jika residensi data bukan batasan dan Anda menginginkan waktu antrean yang lebih cepat.

  • Pengembang (pratinjau): Memberikan penghematan biaya yang signifikan dengan memanfaatkan kapasitas menganggur untuk pelatihan. Tidak ada jaminan latensi atau SLA, sehingga pekerjaan di tingkat ini mungkin secara otomatis didahului dan dilanjutkan nanti. Tidak ada jaminan untuk residensi data juga. Ideal untuk eksperimen dan beban kerja yang sensitif terhadap harga.

import openai
from openai import AzureOpenAI

base_uri = "https://<ACCOUNT-NAME>.services.ai.azure.com"
api_key = "<API-KEY>"
api_version = "2025-04-01-preview"
client = AzureOpenAI(
azure_endpoint=base_uri,
api_key=api_key,
api_version=api_version
)
try:
    client.fine_tuning.jobs.create(
    model="gpt-4.1-mini",
    training_file="<FILE-ID>",
    extra_body={"trainingType": "developerTier"}
    )
except openai.APIConnectionError as e:
    print("The server could not be reached")
    print(e.__cause__) # An underlying exception, likely raised within httpx.
except openai.RateLimitError as e:
    print("A 429 status code was received; we should back off a bit.")
except openai.APIStatusError as e:
    print("Another non-200-range status code was received")
    print(e.status_code)
    print(e.response)
    print(e.body)

Periksa status tugas penyetelan

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Mencantumkan peristiwa penyempurnaan

Untuk memeriksa peristiwa penyempurnaan individual yang dihasilkan selama pelatihan, jalankan perintah berikut. Sebelum menjalankan perintah, Anda mungkin perlu meningkatkan pustaka klien OpenAI Anda ke versi terbaru dengan menggunakan pip install openai --upgrade.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Mencantumkan titik pemeriksaan

Penyelesaian setiap epoch pelatihan menghasilkan titik pemeriksaan. Titik pemeriksaan adalah versi model yang berfungsi penuh yang dapat disebarkan dan digunakan sebagai model target untuk pekerjaan penyempurnaan berikutnya. Titik pemeriksaan dapat sangat berguna, karena mungkin menyediakan rekam jepret sebelum overfitting.

Ketika pekerjaan penyempurnaan selesai, Anda memiliki tiga versi terbaru dari model yang tersedia untuk disebarkan. Model anda yang disempurnakan mewakili epoch akhir. Dua epoch sebelumnya tersedia sebagai titik pemeriksaan.

Anda dapat menjalankan perintah berikut untuk mengambil daftar titik pemeriksaan yang terkait dengan pekerjaan penyempurnaan individual. Sebelum menjalankan perintah, Anda mungkin perlu meningkatkan pustaka klien OpenAI Anda ke versi terbaru dengan menggunakan pip install openai --upgrade.

response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))

Menganalisis model yang disesuaikan

Azure OpenAI melampirkan file hasil bernama results.csv ke setiap pekerjaan penyempurnaan setelah selesai. Anda dapat menggunakan file hasil untuk menganalisis performa pelatihan dan validasi model yang disesuaikan. ID file untuk file hasil tercantum untuk setiap model yang dikustomisasi. Anda dapat menggunakan SDK Python untuk mengambil ID file dan mengunduh file hasil untuk analisis.

Contoh kode Python berikut mengambil ID berkas dari hasil pertama yang dilampirkan ke tugas penyetelan untuk model yang dipersonalisasi. Kemudian menggunakan SDK Python untuk mengunduh file ke direktori kerja Anda saat ini untuk analisis.

# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
    result_file_id = response.result_files[0]

retrieve = client.files.retrieve(result_file_id)

# Download the result file.
print(f'Downloading result file: {result_file_id}')

with open(retrieve.filename, "wb") as file:
    result = client.files.content(result_file_id).read()
    file.write(result)

File hasilnya adalah sebuah CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan selama proses fine-tuning. File hasil berisi kolom berikut:

Nama kolom Deskripsi
step Jumlah langkah pelatihan. Langkah pelatihan mewakili satu pass, maju dan mundur, pada batch data pelatihan.
train_loss Kerugian untuk batch pelatihan.
train_mean_token_accuracy Persentase token pada batch pelatihan yang diprediksi dengan benar oleh model.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Nilai kerugian untuk batch validasi.
validation_mean_token_accuracy Persentase token dalam batch validasi yang diprediksi model dengan benar.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
full_valid_loss Kerugian validasi dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, kerugian harus berkurang.
full_valid_mean_token_accuracy Akurasi token rata-rata yang valid dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, akurasi token akan meningkat.

Anda juga dapat melihat data dalam file Anda results.csv sebagai plot di portal Microsoft Foundry. Saat Anda memilih tautan untuk model terlatih Anda, tiga bagan muncul: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data muncul pada plot yang sama.

Perhatikan agar kerugian Anda menurun seiring berjalannya waktu, dan akurasi Anda meningkat. Jika data pelatihan dan validasi Anda berbeda, Anda mungkin mengalami overfitting. Coba pelatihan dengan lebih sedikit epoch atau pengali tingkat pembelajaran yang lebih kecil.

Mengimplementasikan model yang telah disempurnakan

Ketika Anda puas dengan metrik dari tugas penyetelan Anda, atau Anda hanya ingin beralih ke inferensi, Anda harus menerapkan model.

Jika Anda menyebarkan untuk validasi lebih lanjut, pertimbangkan untuk menyebarkan pengujian dengan menggunakan penyebaran Pengembang.

Tidak seperti perintah SDK sebelumnya, Anda harus menggunakan API sarana kontrol untuk penyebaran. Tugas ini memerlukan otorisasi terpisah, jalur API yang berbeda, dan versi API yang berbeda.

Variabel Definition
token Token otorisasi. Ada beberapa cara untuk menghasilkan token otorisasi. Metode term mudah untuk pengujian awal adalah membuka Azure Cloud Shell dari portal Azure. Kemudian jalankan az account get-access-token. Anda dapat menggunakan token ini sebagai token otorisasi sementara untuk pengujian API. Sebaiknya simpan token ini dalam variabel lingkungan baru.
subscription ID langganan untuk sumber daya OpenAI Azure terkait.
resource_group Nama grup sumber daya untuk sumber daya OpenAI Azure Anda.
resource_name Nama sumber daya OpenAI Azure.
model_deployment_name Nama kustom untuk penerapan model baru yang sudah disesuaikan. Nama ini direferensikan dalam kode Anda selama panggilan penyelesaian obrolan.
fine_tuned_model Model Anda yang dioptimalkan. Ambil nilai ini dari hasil pekerjaan penyempurnaan Anda pada langkah sebelumnya. Rutenya terlihat seperti gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Anda perlu menambahkan nilai ke deploy_data JSON. Atau, Anda dapat men-deploy sebuah checkpoint dengan memberikan ID checkpoint, yang muncul dalam format ftchkpt-e559c011ecc04fc68eaa339d8227d02d.
import json
import os
import requests

token= os.getenv("<TOKEN>") 
subscription = "<YOUR_SUBSCRIPTION_ID>"  
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-41-ft" # Custom deployment name that you use to reference the model when making inference calls.

deploy_params = {'api-version': "2024-10-01"} # Control plane API version rather than the data plane API for this call 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}

deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"fine_tuned_model">, # Retrieve this value from the previous call; it looks like gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83
            "version": "1"
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Untuk mempelajari tentang penyebaran lintas wilayah dan cara menggunakan model yang disebarkan, lihat Menggunakan model yang disempurnakan.

Jika Anda siap untuk melakukan penyebaran ke lingkungan produksi atau Anda memiliki kebutuhan penempatan data tertentu, ikuti panduan penyebaran.

Melakukan penyempurnaan berkelanjutan

Setelah membuat model yang disempurnakan, Anda mungkin ingin terus menyempurnakan model dari waktu ke waktu melalui penyempurnaan lebih lanjut. Penyempurnaan berkelanjutan adalah proses berulang untuk memilih model yang sudah disempurnakan sebagai model dasar dan menyempurnakannya lebih lanjut pada serangkaian contoh pelatihan baru. Penyempurnaan berkelanjutan hanya didukung untuk model OpenAI.

Untuk melakukan penyempurnaan pada model yang sebelumnya Disempurnakan, Anda menggunakan proses yang sama yang dijelaskan dalam Membuat model yang disesuaikan. Tetapi alih-alih menentukan nama model dasar generik, Anda menentukan ID model yang disempurnakan. ID dari model yang telah disesuaikan terlihat seperti gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7.

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7"
)
job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

Kami juga menyarankan agar Anda menyertakan suffix parameter untuk lebih mudah membedakan antara iterasi model yang disempurnakan. Parameter suffix mengambil string dan diatur untuk mengidentifikasi model yang disempurnakan. Dengan OpenAI Python API, Anda dapat menambahkan string hingga 18 karakter ke nama model yang disempurnakan.

Jika Anda tidak yakin dengan ID model yang sudah disempurnakan, Anda dapat menemukan informasi ini di halaman Model Microsoft Foundry. Atau Anda dapat membuat daftar model untuk sumber daya OpenAI Azure dengan menggunakan REST API.

Bersihkan penyebaran Anda, model yang disesuaikan, dan file pelatihan

Saat Anda tidak lagi memerlukan model yang disesuaikan, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika perlu.

Hapus penerapan model Anda

Penting

Setelah Anda menyebarkan model yang disesuaikan, jika kapan saja penyebaran tetap tidak aktif selama lebih dari 15 hari, penyebaran akan dihapus. Penyebaran model yang disesuaikan tidak aktif jika model disebarkan lebih dari 15 hari yang lalu dan tidak ada penyelesaian obrolan atau panggilan API respons yang dilakukan padanya selama periode 15 hari berkelanjutan.

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model dasar yang telah dikustomisasi. Model yang disesuaikan dapat disebarkan ulang kapan saja.

Seperti yang dijelaskan dalam Azure OpenAI dalam harga Microsoft Foundry Models, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian obrolan atau panggilan API respons dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat Plan dan kelola biaya untuk Azure OpenAI.

Anda dapat menggunakan salah satu metode ini untuk menghapus penyebaran untuk model yang disesuaikan:

Menghapus model yang dikustomisasi

Anda dapat menghapus model yang disesuaikan dengan menggunakan Foundry.

Nota

Anda tidak dapat menghapus model yang disesuaikan jika model tersebut memiliki penerapan yang sudah ada. Anda harus menghapus penyebaran model sebelum dapat menghapus model yang disesuaikan.

Menghapus file pelatihan Anda

Anda dapat secara opsional menghapus file pelatihan dan validasi yang Anda unggah untuk pelatihan, dan file hasil yang dihasilkan selama pelatihan, dari langganan OpenAI Azure Anda. Anda dapat menggunakan metode berikut untuk menghapus file pelatihan, validasi, dan hasil Anda:

Contoh Python berikut menggunakan Python SDK untuk menghapus file pelatihan, validasi, dan hasil untuk model yang disesuaikan:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in your subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files. Extract the IDs for the
# files with file names that match your training dataset file and
# validation dataset file.
for item in files:
    if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
        results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')

# Enumerate the file IDs for your files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Prasyarat

Model yang didukung

Untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan, lihat artikel tentang model.

Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Tinjau alur kerja untuk REST API

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan REST API dan Python dengan Azure OpenAI:

  1. Siapkan data pelatihan dan validasi Anda.
  2. Pilih model dasar.
  3. Unggah data pelatihan Anda.
  4. Latih model baru yang disesuaikan.
  5. Periksa status model yang telah disesuaikan.
  6. Sebarkan model yang disesuaikan untuk digunakan.
  7. Gunakan model yang disesuaikan.
  8. Secara opsional, analisis model yang disesuaikan untuk kinerja dan kesesuaian.

Menyiapkan data pelatihan dan validasi Anda

Himpunan data pelatihan dan validasi Anda terdiri dari contoh input dan output untuk performa model yang Anda inginkan.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Ini juga harus diformat dalam format percakapan yang digunakan API Penyelesaian Obrolan .

Selain format JSONL, file data pelatihan dan validasi harus dikodekan dalam UTF-8 dan menyertakan tanda urutan byte (BOM). Setiap file harus berukuran kurang dari 512 MB.

Jika Anda menginginkan panduan langkah demi langkah tentang penyempurnaan gpt-4o-mini-2024-07-18, lihat tutorial penyempurnaan Azure OpenAI.

Contoh format file

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

Format file percakapan bergilir

Beberapa putaran percakapan dalam satu baris file pelatihan JSONL Anda telah didukung. Untuk melewati penyesuaian pada pesan asisten tertentu, tambahkan pasangan kunci/nilai opsional weight. Saat ini, weight dapat diatur ke 0 atau 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Penyelesaian percakapan dengan penglihatan

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

Membuat himpunan data pelatihan dan validasi Anda

Semakin banyak contoh pelatihan yang Anda miliki, semakin baik. Pekerjaan penyempurnaan tidak akan dilanjutkan tanpa setidaknya 10 contoh pelatihan, tetapi jumlah sekecil itu tidak cukup untuk memengaruhi respons model secara nyata. Praktik terbaik untuk penyempurnaan yang berhasil adalah menyediakan ratusan, jika bukan ribuan, contoh pelatihan.

Secara umum, menggandakan ukuran himpunan data dapat menyebabkan peningkatan linier dalam kualitas model. Tetapi perlu diingat bahwa contoh berkualitas rendah dapat berdampak negatif pada performa. Jika Anda melatih model pada sejumlah besar data internal tanpa terlebih dahulu memangkas himpunan data hanya untuk contoh berkualitas tertinggi, model Anda mungkin berkinerja lebih buruk dari yang diharapkan.

Mengunggah data pelatihan Anda

Langkah selanjutnya adalah memilih data pelatihan yang sudah disiapkan atau mengunggah data pelatihan baru yang disiapkan untuk digunakan saat Anda menyesuaikan model Anda. Setelah menyiapkan data pelatihan, Anda dapat mengunggah file ke layanan. Ada dua cara untuk mengunggah data pelatihan:

Untuk file data besar, kami sarankan Anda mengimpor dari Blob Storage. File besar dapat menjadi tidak stabil saat Anda mengunggahnya melalui formulir multibagian karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan. Untuk informasi selengkapnya tentang Blob Storage, lihat Apa yang Azure Blob Storage?.

Mengunggah data pelatihan

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"

Mengunggah data validasi

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"

Membuat model yang dikustomisasi

Setelah mengunggah file pelatihan dan validasi, Anda siap untuk memulai pekerjaan penyempurnaan. Kode berikut menunjukkan contoh cara membuat pekerjaan penyempurnaan baru dengan menggunakan REST API.

Contoh ini mencakup penerusan parameter seed. Seed mengendalikan reproduksibilitas tugas. Memberikan seed dan parameter pekerjaan yang sama seharusnya menghasilkan hasil yang sama, tetapi mungkin berbeda dalam kasus yang jarang terjadi. Jika Anda tidak menentukan seed, satu akan dibuat untuk Anda.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-2025-04-14",
    "training_file": "<TRAINING_FILE_ID>",
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

Jika Anda menyempurnakan model yang mendukung pelatihan global, Anda dapat menentukan jenis pelatihan dengan menggunakan extra_body argumen bernama dan menggunakan api-version=2025-04-01-preview:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2025-04-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-2025-04-14",
    "training_file": "<TRAINING_FILE_ID>",
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105,
    "trainingType": "globalstandard"
}'

Anda juga dapat meneruskan parameter opsional tambahan seperti hyperparameter untuk mengambil kontrol yang lebih besar dari proses penyempurnaan. Untuk pelatihan awal, sebaiknya gunakan default otomatis yang ada tanpa menentukan parameter ini.

Hyperparameter yang saat ini didukung untuk penyempurnaan yang diawasi adalah:

Nama Tipe Deskripsi
batch_size Integer Ukuran batch yang akan digunakan untuk pelatihan. Ukuran batch adalah jumlah contoh pelatihan yang digunakan untuk melatih satu pass maju dan mundur. Secara umum, kami menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar.

Nilai default dan nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varian yang lebih rendah.
learning_rate_multiplier Angka Pengali laju pembelajaran yang digunakan untuk pelatihan. Tingkat pembelajaran penyempurnaan adalah tingkat pembelajaran asli yang digunakan untuk pra-pelatihan, dikalikan dengan nilai ini.

Tingkat pembelajaran yang lebih besar cenderung berkinerja lebih baik dengan ukuran batch yang lebih besar. Sebaiknya bereksperimen dengan nilai dalam rentang 0.02 untuk 0.2 melihat apa yang menghasilkan hasil terbaik. Tingkat pembelajaran yang lebih kecil dapat berguna untuk menghindari overfitting.
n_epochs Integer Jumlah epoch yang diperlukan untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.
seed Integer Benih yang mengontrol reproduksi pekerjaan.

Untuk mempelajari tentang hyperparameter yang didukung untuk metode penyesuaian lainnya, lihat panduan untuk pengoptimalan preferensi langsung dan panduan untuk penyempurnaan penguatan.

Pilih jenis pelatihan

Pilih tingkat pelatihan berdasarkan kasus penggunaan dan anggaran Anda:

  • Standar: Pelatihan terjadi di wilayah sumber daya Foundry saat ini dan memberikan jaminan untuk residensi data. Ideal untuk beban kerja di mana data harus tetap berada di wilayah tertentu.

  • Global: Memberikan harga yang lebih terjangkau dibandingkan dengan Standar dengan menggunakan kapasitas di luar wilayah Anda saat ini. Data dan bobot disalin ke wilayah tempat pelatihan terjadi. Ideal jika residensi data bukan batasan dan Anda menginginkan waktu antrean yang lebih cepat.

  • Pengembang (pratinjau): Memberikan penghematan biaya yang signifikan dengan memanfaatkan kapasitas menganggur untuk pelatihan. Tidak ada jaminan latensi atau SLA, sehingga pekerjaan di tingkat ini mungkin secara otomatis didahului dan dilanjutkan nanti. Tidak ada jaminan residensi data juga. Ideal untuk eksperimen dan beban kerja yang sensitif terhadap harga.

curl -X POST "https://<ACCOUNT-NAME>.openai.azure.com/openai/fine_tuning/jobs?api-version=2025-04-01-preview" -H "Content-Type: application/json" -H "api-key: <API-KEY>" -d "{"model": "gpt-4.1", "training_file": "<FILE_ID>", "hyperparameters": {"prompt_loss_weight": 0.1}, "trainingType": "developerTier"}"

Periksa status model yang dikustomisasi

Setelah Anda memulai pekerjaan penyempurnaan, perlu waktu untuk menyelesaikannya. Pekerjaan Anda mungkin diantrekan di belakang pekerjaan lain dalam sistem. Melatih model Anda dapat memakan waktu beberapa menit atau jam, tergantung pada model dan ukuran himpunan data.

Contoh berikut menggunakan REST API untuk memeriksa status pekerjaan penyempurnaan Anda. Contoh ini mengambil informasi tentang pekerjaan Anda dengan menggunakan ID pekerjaan yang diperoleh dari contoh yang telah disebutkan sebelumnya.

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<YOUR-JOB-ID> \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Mencantumkan peristiwa penyempurnaan

Untuk memeriksa peristiwa penyempurnaan individu yang dihasilkan selama pelatihan:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Mencantumkan titik pemeriksaan

Penyelesaian setiap epoch pelatihan menghasilkan titik pemeriksaan. Titik pemeriksaan adalah versi model yang berfungsi penuh yang dapat disebarkan dan digunakan sebagai model target untuk pekerjaan penyempurnaan berikutnya. Titik pemeriksaan dapat sangat berguna, karena mungkin menyediakan rekam jepret sebelum overfitting.

Ketika pekerjaan penyempurnaan selesai, Anda memiliki tiga versi terbaru dari model yang tersedia untuk disebarkan. Model anda yang disempurnakan mewakili epoch akhir. Dua epoch sebelumnya tersedia sebagai titik pemeriksaan.

Anda dapat menjalankan perintah berikut untuk mengambil daftar titik pemeriksaan yang terkait dengan pekerjaan penyempurnaan individual:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Jeda dan lanjutkan

Selama pelatihan, Anda dapat melihat log dan metrik dan menjeda pekerjaan sesuai kebutuhan. Menjeda dapat berguna jika metrik tidak berkonvergensi atau jika Anda merasa bahwa model tidak belajar dengan kecepatan yang tepat.

Setelah pekerjaan pelatihan dijeda dan evaluasi keamanan selesai, checkpoint yang dapat digunakan dibuat. Titik pemeriksaan ini tersedia untuk Anda sebarkan dan gunakan untuk inferensi, atau Anda dapat melanjutkan pekerjaan untuk menyelesaikannya.

Operasi jeda hanya berlaku untuk tugas yang telah dilatih setidaknya selama satu langkah dan berada dalam status Berjalan.

Jeda

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Lanjutkan

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Menyalin model (pratinjau)

Anda sekarang dapat menyalin model titik pemeriksaan yang disempurnakan dari satu wilayah ke wilayah lain, di berbagai langganan tetapi dalam penyewa yang sama. Proses ini menggunakan API khusus untuk membantu memastikan transfer yang efisien dan aman. Fitur ini saat ini hanya tersedia dengan API dan bukan melalui portal Foundry.

Setelah model disalin dari wilayah A ke wilayah B, Anda dapat terus menyempurnakan model di wilayah B dan menyebarkan model dari lokasi ini.

Nota

Penghapusan titik pemeriksaan model di wilayah sumber tidak menyebabkan model dihapus di wilayah tujuan. Untuk menghapus model di kedua wilayah setelah disalin, Anda harus menyebarkan model secara terpisah di setiap wilayah.

Prasyarat

  • Sumber daya atau akun tujuan harus memiliki setidaknya satu pekerjaan penyempurnaan.
  • Sumber daya atau akun tujuan tidak boleh menonaktifkan akses jaringan publik (setidaknya saat Anda mengirim permintaan salin).
  • Anda hanya dapat menyalin ke akun tujuan, jika akun yang memulai salinan memiliki izin yang memadai untuk mengakses akun tujuan.

Atur izin

  1. Buat identitas terkelola yang ditetapkan pengguna.
  2. Berikan peran Pengguna AI Azure kepada identitas terkelola yang ditetapkan oleh pengguna pada sumber daya atau akun tujuan Anda.
  3. Tetapkan identitas terkelola yang ditetapkan pengguna ke akun sumber daya sumber Anda.

Menyalin model

curl --request POST \
  --url 'https://<aoai-resource>.openai.azure.com/openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' \
  --data '{
  "destinationResourceId": "<resourceId>",
  "region": "<region>"
}'

Karena ini adalah operasi yang berjalan lama, periksa status salinan model yang disempurnakan dengan memberikan ID titik pemeriksaan akun sumber yang digunakan dalam POST panggilan.

Periksa status salin

curl --request GET \
  --url 'https://<aoai-resource>.openai.azure.com//openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <api-key>' \
  --header 'aoai-copy-ft-checkpoints: preview' 

Nota

Saat Anda menyalin titik pemeriksaan dari akun sumber, nama titik pemeriksaan yang sama dipertahankan di akun tujuan. Pastikan Anda menggunakan nama yang sama persis ini untuk penyempurnaan, penyebaran, atau operasi lainnya di akun tujuan. Titik pemeriksaan ini tidak muncul di UI atau di list checkpoints API.

Menganalisis model yang disesuaikan

Azure OpenAI melampirkan file hasil bernama results.csv ke setiap pekerjaan penyempurnaan setelah selesai. Anda dapat menggunakan file hasil untuk menganalisis performa pelatihan dan validasi model yang disesuaikan. ID file untuk file hasil tercantum untuk setiap model yang dikustomisasi. Anda dapat menggunakan REST API untuk mengambil ID file dan mengunduh file hasil untuk analisis.

Contoh Python berikut menggunakan REST API untuk mengambil ID file dari file hasil pertama yang dilampirkan ke pekerjaan penyempurnaan untuk model yang disesuaikan. Kemudian mengunduh file ke direktori kerja Anda untuk analisis.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<JOB_ID>" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/files/<RESULT_FILE_ID>/content" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

File hasilnya adalah sebuah CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan selama proses fine-tuning. File hasil berisi kolom berikut:

Nama kolom Deskripsi
step Jumlah langkah pelatihan. Langkah pelatihan mewakili satu pass, maju dan mundur, pada batch data pelatihan.
train_loss Kerugian untuk batch pelatihan.
train_mean_token_accuracy Persentase token pada batch pelatihan yang diprediksi dengan benar oleh model.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Nilai kerugian untuk batch validasi.
validation_mean_token_accuracy Persentase token dalam batch validasi yang diprediksi model dengan benar.

Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi hasil [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0.83 (5 dari 6) jika model memprediksi [[1, 1], [0, 5], [4, 2]].
full_valid_loss Kerugian validasi dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, kerugian harus berkurang.
full_valid_mean_token_accuracy Akurasi token rata-rata yang valid dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, akurasi token akan meningkat.

Anda juga dapat melihat data dalam file results.csv Anda sebagai grafik di portal Foundry. Saat Anda memilih tautan untuk model terlatih Anda, tiga bagan muncul: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data muncul pada plot yang sama.

Perhatikan agar kerugian Anda menurun seiring berjalannya waktu, dan akurasi Anda meningkat. Jika data pelatihan dan validasi Anda berbeda, Anda mungkin mengalami overfitting. Coba pelatihan dengan lebih sedikit epoch atau pengali tingkat pembelajaran yang lebih kecil.

Mengimplementasikan model yang telah disempurnakan

Ketika Anda puas dengan metrik dari tugas penyetelan Anda, atau Anda hanya ingin beralih ke inferensi, Anda harus menerapkan model.

Jika Anda menyebarkan untuk validasi lebih lanjut, pertimbangkan untuk menyebarkan pengujian dengan menggunakan penyebaran Pengembang.

Jika Anda siap untuk melakukan penyebaran ke lingkungan produksi atau Anda memiliki kebutuhan penempatan data tertentu, ikuti panduan penyebaran.

Variabel Definition
token Token otorisasi. Ada beberapa cara untuk menghasilkan token otorisasi. Metode term mudah untuk pengujian awal adalah membuka Azure Cloud Shell dari portal Azure. Kemudian jalankan az account get-access-token. Anda dapat menggunakan token ini sebagai token otorisasi sementara untuk pengujian API. Sebaiknya simpan token ini dalam variabel lingkungan baru.
subscription ID langganan untuk sumber daya OpenAI Azure terkait.
resource_group Nama grup sumber daya untuk sumber daya OpenAI Azure Anda.
resource_name Nama sumber daya OpenAI Azure.
model_deployment_name Nama kustom untuk penerapan model baru yang sudah disesuaikan. Nama ini direferensikan dalam kode Anda selama panggilan penyelesaian obrolan.
fine_tuned_model Model Anda yang dioptimalkan. Ambil nilai ini dari hasil pekerjaan penyempurnaan Anda pada langkah sebelumnya. Rutenya terlihat seperti gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Anda perlu menambahkan nilai ke deploy_data JSON. Atau, Anda dapat men-deploy sebuah checkpoint dengan memberikan ID checkpoint, yang muncul dalam format ftchkpt-e559c011ecc04fc68eaa339d8227d02d.
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>?api-version=2024-10-21" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

Untuk mempelajari tentang penyebaran lintas wilayah dan cara menggunakan model yang disebarkan, lihat Menggunakan model yang disempurnakan.

Melakukan penyempurnaan berkelanjutan

Setelah membuat model yang disempurnakan, Anda mungkin ingin terus menyempurnakan model dari waktu ke waktu melalui penyempurnaan lebih lanjut. Penyempurnaan berkelanjutan adalah proses berulang untuk memilih model yang sudah disempurnakan sebagai model dasar dan menyempurnakannya lebih lanjut pada serangkaian contoh pelatihan baru. Penyempurnaan berkelanjutan hanya didukung untuk model OpenAI.

Untuk melakukan penyempurnaan pada model yang sebelumnya Disempurnakan, Anda menggunakan proses yang sama yang dijelaskan dalam Membuat model yang disesuaikan. Tetapi alih-alih menentukan nama model dasar generik, Anda menentukan ID model yang disempurnakan. ID dari model yang telah disesuaikan terlihat seperti gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7",
    "training_file": "<TRAINING_FILE_ID>",
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

Kami juga menyarankan agar Anda menyertakan suffix parameter untuk lebih mudah membedakan antara iterasi model yang disempurnakan. Parameter suffix mengambil string dan diatur untuk mengidentifikasi model yang disempurnakan. Akhiran dapat berisi hingga 40 karakter (a hingga z, A hingga Z, 0 hingga 9, -, dan _) yang ditambahkan ke nama model yang disesuaikan.

Jika Anda tidak yakin dengan ID dari model yang disempurnakan Anda yang sudah ada, Anda bisa menemukan informasi ini di halaman Models di Foundry. Atau Anda dapat membuat daftar model untuk sumber daya OpenAI Azure dengan menggunakan REST API.

Bersihkan penyebaran Anda, model yang disesuaikan, dan file pelatihan

Saat Anda tidak lagi memerlukan model yang disesuaikan, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika perlu.

Hapus penerapan model Anda

Anda dapat menggunakan salah satu metode ini untuk menghapus penyebaran untuk model yang disesuaikan:

Menghapus model yang dikustomisasi

Anda dapat menghapus model yang disesuaikan dengan menggunakan Foundry.

Nota

Anda tidak dapat menghapus model yang disesuaikan jika model tersebut memiliki penerapan yang sudah ada. Anda harus menghapus penyebaran model sebelum dapat menghapus model yang disesuaikan.

Menghapus file pelatihan Anda

Anda dapat secara opsional menghapus file pelatihan dan validasi yang Anda unggah untuk pelatihan, dan file hasil yang dihasilkan selama pelatihan, dari langganan OpenAI Azure Anda. Anda dapat menggunakan Foundry untuk menghapus file.