Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Prasyarat
- Baca panduan tentang kapan menggunakan penyempurnaan Foundry.
- Anda memerlukan langganan Azure. Buat akun gratis.
- Anda memerlukan sumber daya proyek Foundry. Untuk membuatnya, masuk ke portal Foundry.
- Penyempurnaan memerlukan peran Azure AI Owner. Meskipun Pengguna Azure AI dapat melatih (menyesuaikan) model, hanya Pemilik AI yang dapat menerapkannya. Anda juga dapat membuat peran kustom yang menggabungkan tindakan yang diperlukan ke dalam satu peran.
- Jika Anda belum memiliki akses untuk melihat kuota dan menyebarkan model di portal Foundry, Anda memerlukan lebih banyak izin.
Model yang didukung
Model berikut didukung untuk penyempurnaan:
| Identifikasi Model | Wilayah standar | Global | Pengembang | Metode | Kedudukan | Modality |
|---|---|---|---|---|---|---|
gpt-4o-mini (2024-07-18) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT | GA | Teks ke teks |
gpt-4o (2024-08-06) |
US Timur 2 US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1 (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1-mini (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
gpt-4.1-nano (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
o4-mini (2025-04-16) |
US Timur 2 Swedia Tengah |
✅ | ❌ | RFT | GA | Teks ke teks |
gpt-5 (2025-08-07) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | RFT | Pratinjau pribadi | Teks ke teks |
Ministral-3B (2411) |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Qwen-32B |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Llama-3.3-70B-Instruct |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
gpt-oss-20b |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.
Nota
Model sumber terbuka (Ministral-3B, Qwen-32B, Llama-3.3-70B-Instruct, gpt-oss-20b) hanya didukung pada sumber daya Foundry dan di UI Foundry baru.
Menyiapkan data 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 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.
Jika Anda tidak menyiapkan himpunan data yang sudah ada, Anda dapat menggunakan kemampuan pembuatan data untuk membuat yang baru.
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 biggest city in 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.
Buat model yang disesuaikan
Untuk menyempurnakan model dalam proyek Foundry yang ada, ikuti langkah-langkah berikut:
Masuk ke Foundry dan pilih proyek Anda. Jika Anda belum memiliki proyek, pertama-tama buat proyek.
Buka halaman Build>Penyesuaian, kemudian pilih tombol Penyesuaian di bagian kanan atas layar.
Anda sekarang akan melihat pengalaman penyempurnaan model untuk membuat pekerjaan penyempurnaan baru. Gunakan bagian berikut untuk membantu mengonfigurasi pekerjaan, lalu pilih Kirim untuk mulai melatih model baru Anda yang disempurnakan.
Pemilihan model dasar
Wilayah proyek mungkin membatasi model yang tersedia. Pilihan model Anda memengaruhi performa dan biaya model Anda.
Anda juga dapat memilih model yang sebelumnya dioptimalkan.
Metode kustomisasi
Metode kustomisasi yang didukung bergantung pada model yang dipilih:
Penyempurnaan yang diawasi (SFT): Melatih model pada pasangan input/output berlabel. Terbaik untuk sebagian besar skenario, termasuk spesialisasi tugas.
Pengoptimalan preferensi langsung (DPO): Menyelaraskan model dengan respons pilihan manusia. Ideal untuk meningkatkan kualitas respons.
Penyempurnaan penguatan (RFT): Menggunakan isyarat pemberian penghargaan dari penilai model untuk mengoptimasi perilaku yang kompleks.
Nota
Sisa artikel ini mencakup langkah-langkah untuk metode SFT. Untuk instruksi khusus untuk metode penyesuaian lainnya, lihat panduan untuk DPO dan panduan untuk RFT.
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.
Data pelatihan dan validasi
Jika Anda memiliki himpunan data yang sudah ada di proyek Foundry, pilih Himpunan data yang sudah ada untuk Sumber data, lalu pilih himpunan data Anda.
Untuk mengunggah himpunan data yang baru disiapkan, pilih Unggah himpunan data baru untuk Sumber data, lalu unggah file JSONL Anda.
Setelah Anda memilih atau mengunggah file data, pemeriksaan validasi secara otomatis terjadi untuk mengonfirmasi bahwa file diformat sebagai JSONL, dikodekan dalam UTF-8 dengan BOM, dan berukuran kurang dari 512 MB.
Parameter opsional
Akhiran
Kami menyarankan agar Anda memberikan nilai Akhiran untuk mempermudah membedakan iterasi berbeda dari model yang dioptimalkan. Akhiran menampung string hingga 18 karakter dan digunakan dalam penamaan model yang telah disesuaikan yang dihasilkan.
Seed
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.
Hiperparameter
Anda dapat mengonfigurasi hiperparameter secara manual untuk pekerjaan penyempurnaan Anda atau membiarkannya sebagai default.
Hyperparameter berikut tersedia:
| 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. Ketika nilai diatur ke -1, ukuran batch dihitung sebagai 0,2% contoh pada set latihan. Maksimum adalah 256. |
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. Jika nilai diatur ke -1, jumlah epoch ditentukan secara dinamis berdasarkan data input. |
Penyebaran otomatis
Penting
Untuk penyebaran otomatis, Anda memerlukan peran Pemilik Azure AI atau peran apa pun dengan tindakan Microsoft.CognitiveServices/accounts/deployments/write.
Untuk menghemat waktu, Anda dapat mengaktifkan penyebaran otomatis 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.
Penyebaran otomatis hanya didukung untuk model OpenAI.
Memantau dan menganalisis hasilnya
Setelah Anda mengirimkan pekerjaan penyempurnaan, tampilan tabel mencantumkan semua pengiriman pekerjaan penyempurnaan Anda. Untuk melihat informasi selengkapnya tentang hasil individual, buka halaman Detail pekerjaan .
Pekerjaan Anda mungkin diantrekan di belakang pekerjaan lain dalam sistem. Melatih model Anda dapat memakan waktu beberapa menit hingga berjam-jam, tergantung pada model dan ukuran himpunan data.
Metrics
Anda dapat memantau metrik berikut dengan masuk ke pivot Monitor :
train_loss: Kerugian untuk batch pelatihan. Setiap langkah pelatihan pada sumbu x mewakili satu pemrosesan, ke depan dan ke belakang, pada batch data pelatihan.full_valid_loss: Kerugian validasi dihitung pada akhir setiap epoch. Ketika pelatihan berjalan dengan baik, kerugian harus berkurang.train_mean_token_accuracy: Persentase token yang diprediksi dengan benar oleh model dalam batch pelatihan.Misalnya, jika ukuran batch diatur ke
3dan data Anda berisi hasil[[1, 2], [0, 5], [4, 2]], nilai ini diatur ke0.83(5 dari 6) jika model memprediksi[[1, 1], [0, 5], [4, 2]].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.
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.
Checkpoints
Ketika setiap epoch pelatihan selesai, titik pemeriksaan dihasilkan. Anda dapat melihat titik pemeriksaan dengan masuk ke pivot 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. Anda dapat menyalin titik pemeriksaan antara sumber daya dan langganan melalui REST API.
Nota
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. Penghentian hanya didukung untuk model OpenAI.
Mengimplementasikan model yang telah dioptimalkan
Penting
Untuk menyebarkan model, Anda memerlukan peran Pemilik Azure AI atau peran apa pun dengan tindakan Microsoft.CognitiveServices/accounts/deployments/write.
Saat Anda puas dengan metrik dari pekerjaan penyempurnaan, Anda dapat menyebarkan model dengan memilih tombol Sebarkan di halaman detail lalu mengonfigurasi pengaturan penyebaran Anda.
Untuk informasi selengkapnya, lihat panduan penyempurnaan.
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 yang sudah diterapkan atau yang tersedia untuk pengujian di lingkungan uji coba) 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 sudah disempurnakan sebelumnya, 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.
Penyempurnaan berkelanjutan hanya didukung untuk model OpenAI.
Membersihkan sumber daya Anda
Saat Anda tidak lagi memerlukan model yang dioptimalkan, Anda dapat menghapus implementasi dan model tersebut. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika perlu.
Hapus penyebaran model yang dioptimalkan
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 penetapan harga model di Foundry Microsoft, setiap model yang disesuaikan 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 yang disempurnakan pada halaman Models>Build di portal Foundry.
Hapus model yang dioptimalkan
Anda dapat menghapus model yang disempurnakan di halaman Penyempurnaan di portal Foundry. Pilih model yang disempurnakan untuk dihapus, lalu pilih Hapus.
Nota
Anda tidak dapat menghapus model yang telah dioptimalkan jika model tersebut masih memiliki penerapan aktif. Anda harus menghapus penyebaran model sebelum Anda dapat menghapus model yang telah disempurnakan.
Prasyarat
- Baca panduan kapan harus menggunakan penyetelan Azure OpenAI.
- Anda memerlukan langganan Azure. Buat akun gratis.
- Anda memerlukan sumber daya OpenAI Azure. Untuk informasi selengkapnya, lihat Buat sumber daya dan sebarkan model dengan Azure OpenAI.
- Anda memerlukan pustaka Python berikut:
os,json,requests,openai. - Anda memerlukan pustaka Python OpenAI.
- Penyempurnaan memerlukan peran Azure AI Owner. Meskipun Pengguna Azure AI dapat melatih (menyesuaikan) model, hanya Pemilik AI yang dapat menerapkannya. Anda juga dapat membuat peran kustom yang menggabungkan tindakan yang diperlukan ke dalam satu peran.
- Jika Anda belum memiliki akses untuk melihat kuota dan menyebarkan model di portal Foundry, Anda memerlukan lebih banyak izin.
Model yang didukung
Model berikut didukung untuk penyempurnaan:
| Identifikasi Model | Wilayah standar | Global | Pengembang | Metode | Kedudukan | Modality |
|---|---|---|---|---|---|---|
gpt-4o-mini (2024-07-18) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT | GA | Teks ke teks |
gpt-4o (2024-08-06) |
US Timur 2 US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1 (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1-mini (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
gpt-4.1-nano (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
o4-mini (2025-04-16) |
US Timur 2 Swedia Tengah |
✅ | ❌ | RFT | GA | Teks ke teks |
gpt-5 (2025-08-07) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | RFT | Pratinjau pribadi | Teks ke teks |
Ministral-3B (2411) |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Qwen-32B |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Llama-3.3-70B-Instruct |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
gpt-oss-20b |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.
Nota
Model sumber terbuka (Ministral-3B, Qwen-32B, Llama-3.3-70B-Instruct, gpt-oss-20b) hanya didukung pada sumber daya Foundry dan di UI Foundry baru.
Meninjau alur kerja untuk SDK Python
Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan SDK Python dengan Azure OpenAI:
- Siapkan data pelatihan dan validasi Anda.
- Pilih model dasar.
- Unggah data pelatihan Anda.
- Latih model baru yang disesuaikan.
- Periksa status model yang telah disesuaikan.
- Sebarkan model yang disesuaikan untuk digunakan.
- Gunakan model yang disesuaikan.
- 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 Python berikut mengambil ID file dari file hasil pertama yang dilampirkan pada tugas penyetelan untuk model kustom Anda. 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 results.csv anda 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 disempurnakan yang ada, Anda dapat menemukan informasi ini di halaman Models dari 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 penetapan harga model di Foundry Microsoft, setiap model yang disesuaikan 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:
- Pengecoran
- REST API
- Python SDK
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
- Baca panduan kapan harus menggunakan penyetelan Azure OpenAI.
- Anda memerlukan langganan Azure. Buat akun gratis.
- Anda memerlukan sumber daya OpenAI Azure. Untuk informasi selengkapnya, lihat Buat sumber daya dan sebarkan model dengan Azure OpenAI.
- Penyempurnaan memerlukan peran Azure AI Owner. Meskipun Pengguna Azure AI dapat melatih (menyesuaikan) model, hanya Pemilik AI yang dapat menerapkannya. Anda juga dapat membuat peran kustom yang menggabungkan tindakan yang diperlukan ke dalam satu peran.
- Jika Anda belum memiliki akses untuk melihat kuota dan menyebarkan model di portal Foundry, Anda memerlukan lebih banyak izin.
Model yang didukung
Model berikut didukung untuk penyempurnaan:
| Identifikasi Model | Wilayah standar | Global | Pengembang | Metode | Kedudukan | Modality |
|---|---|---|---|---|---|---|
gpt-4o-mini (2024-07-18) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT | GA | Teks ke teks |
gpt-4o (2024-08-06) |
US Timur 2 US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1 (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks dan visi ke teks |
gpt-4.1-mini (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
gpt-4.1-nano (2025-04-14) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | SFT, DPO | GA | Teks ke teks |
o4-mini (2025-04-16) |
US Timur 2 Swedia Tengah |
✅ | ❌ | RFT | GA | Teks ke teks |
gpt-5 (2025-08-07) |
US Tengah Utara Swedia Tengah |
✅ | ✅ | RFT | Pratinjau pribadi | Teks ke teks |
Ministral-3B (2411) |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Qwen-32B |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Llama-3.3-70B-Instruct |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
gpt-oss-20b |
Tidak didukung | ✅ | ❌ | SFT | Pratinjau umum | Teks ke teks |
Atau Anda dapat melakukan penyempurnaan lebih lanjut pada model yang sebelumnya telah disempurnakan, yang diformat sebagai base-model.ft-{jobid}.
Nota
Model sumber terbuka (Ministral-3B, Qwen-32B, Llama-3.3-70B-Instruct, gpt-oss-20b) hanya didukung pada sumber daya Foundry dan di UI Foundry baru.
Tinjau alur kerja untuk REST API
Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan REST API dan Python dengan Azure OpenAI:
- Siapkan data pelatihan dan validasi Anda.
- Pilih model dasar.
- Unggah data pelatihan Anda.
- Latih model baru yang disesuaikan.
- Periksa status model yang telah disesuaikan.
- Sebarkan model yang disesuaikan untuk digunakan.
- Gunakan model yang disesuaikan.
- 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
- Buat identitas terkelola yang ditetapkan pengguna.
- Berikan peran Pengguna AI Azure ke identitas terkelola yang ditetapkan pengguna di sumber daya atau akun tujuan Anda.
- 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.