Menyesuaikan model dengan penyempurnaan

Layanan Azure OpenAI memungkinkan Anda menyesuaikan model kami dengan himpunan data pribadi Anda dengan menggunakan proses yang dikenal sebagai penyempurnaan. Langkah penyesuaian ini akan memungkinkan Anda mendapatkan lebih banyak dari layanan dengan menyediakan:

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

Berbeda dengan pembelajaran beberapa bidikan, penyetelan halus meningkatkan model dengan melatih lebih banyak contoh daripada yang dapat sesuai dengan permintaan, memungkinkan Anda mencapai hasil yang lebih baik pada sejumlah tugas. Karena penyetelan halus menyesuaikan bobot model dasar untuk meningkatkan performa pada tugas tertentu, Anda tidak perlu menyertakan contoh atau instruksi sebanyak mungkin dalam perintah Anda. Ini berarti lebih sedikit teks yang dikirim dan lebih sedikit token yang diproses pada setiap panggilan API, berpotensi menghemat biaya, dan meningkatkan latensi permintaan.

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

Prasyarat

  • Baca panduan Penghalusan Kapan menggunakan Azure OpenAI.
  • Langganan Azure. Buat akun gratis.
  • Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan.
  • Sumber daya Azure OpenAI yang terletak di wilayah yang mendukung penyempurnaan model Azure OpenAI. Periksa tabel ringkasan model dan ketersediaan wilayah untuk daftar model yang tersedia menurut wilayah dan fungsionalitas yang didukung. Untuk informasi selengkapnya, lihat Membuat sumber daya dan menyebarkan model dengan Azure OpenAI.
  • Akses penyempurnaan memerlukan Kontributor OpenAI Cognitive Services.
  • Jika Anda belum memiliki akses untuk melihat kuota, dan menyebarkan model di Azure OpenAI Studio, Anda akan memerlukan izin tambahan.

Catatan

Saat ini, Anda harus mengirimkan aplikasi untuk mengakses Layanan Azure OpenAI. Untuk mengajukan akses, lengkapi formulir ini.

Model

Model berikut mendukung penyempurnaan:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

Lihat halaman model untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan.

Meninjau alur kerja untuk Azure OpenAI Studio

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan Azure OpenAI Studio:

  1. Siapkan data pelatihan dan validasi Anda.
  2. Gunakan wizard Buat model kustom di Azure OpenAI Studio untuk melatih model kustom Anda.
    1. Pilih model dasar.
    2. Pilih data pelatihan Anda.
    3. Secara opsional, pilih data validasi Anda.
    4. Secara opsional, konfigurasikan opsi lanjutan untuk pekerjaan penyempurnaan Anda.
    5. Tinjau pilihan Anda dan latih model kustom baru Anda.
  3. Periksa status model kustom yang disempurnakan.
  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 bagaimana Anda ingin model melakukan.

Jenis model yang berbeda memerlukan format data pelatihan yang berbeda.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Untuk gpt-35-turbo-0613 himpunan data penyempurnaan harus diformat dalam format percakapan yang digunakan oleh API penyelesaian obrolan.

Jika Anda ingin panduan langkah demi langkah dari menyempurnakan gpt-35-turbo-0613 model, silakan lihat tutorial penyempurnaan Azure OpenAI

Contoh format file

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Format file obrolan multi-giliran

Beberapa giliran percakapan dalam satu baris file pelatihan jsonl Anda juga didukung. Untuk melewati penyempurnaan pada pesan asisten tertentu, tambahkan pasangan nilai kunci 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 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}]}

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

Membuat himpunan data pelatihan dan validasi Anda

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

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

Menggunakan wizard Buat model kustom

Azure OpenAI Studio menyediakan wizard Buat model kustom, sehingga Anda dapat membuat dan melatih model yang disempurnakan secara interaktif untuk sumber daya Azure Anda.

  1. Buka Azure OpenAI Studio di https://oai.azure.com/ dan masuk dengan kredensial yang memiliki akses ke sumber daya Azure OpenAI Anda. Selama alur kerja masuk, pilih direktori, langganan Azure, dan sumber daya Azure OpenAI yang sesuai.

  2. Di Azure OpenAI Studio, telusuri ke panel Model Manajemen>, dan pilih Buat model kustom.

    Cuplikan layar yang memperlihatkan cara mengakses wizard Buat model kustom di Azure OpenAI Studio.

Wizard Buat model kustom terbuka.

Pilih model dasar

Langkah pertama dalam membuat model kustom adalah memilih model dasar. Panel Model dasar memungkinkan Anda memilih model dasar yang akan digunakan untuk model kustom Anda. Pilihan Anda memengaruhi performa dan biaya model Anda.

Pilih model dasar dari dropdown Jenis model dasar, lalu pilih Berikutnya untuk melanjutkan.

Anda dapat membuat model kustom dari salah satu model dasar berikut yang tersedia:

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • Atau Anda dapat menyempurnakan model yang sebelumnya disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Cuplikan layar opsi model dengan model kustom yang disempurnakan.

Untuk informasi selengkapnya tentang model dasar kami yang dapat disempurnakan, lihat Model.

Pilih data pelatihan Anda

Langkah selanjutnya adalah memilih data pelatihan yang sudah disiapkan atau mengunggah data pelatihan baru yang disiapkan untuk digunakan saat menyesuaikan model Anda. Panel Data pelatihan menampilkan himpunan data yang sudah ada dan diunggah sebelumnya dan juga menyediakan opsi untuk mengunggah data pelatihan baru.

Cuplikan layar panel Data pelatihan untuk wizard Buat model kustom di Azure OpenAI Studio.

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

Catatan

File data pelatihan harus diformat sebagai file JSONL, dikodekan dalam UTF-8 dengan tanda urutan byte (BOM). Ukuran file harus kurang dari 512 MB.

Mengunggah data pelatihan dari file lokal

Anda dapat mengunggah himpunan data pelatihan baru ke layanan dari file lokal dengan menggunakan salah satu metode berikut:

  • Seret dan letakkan file ke area klien panel Data pelatihan, lalu pilih Unggah file.

  • Pilih Telusuri file dari area klien panel Data pelatihan, pilih file yang akan diunggah dari dialog Buka , lalu pilih Unggah file.

Setelah Anda memilih dan mengunggah himpunan data pelatihan, pilih Berikutnya untuk melanjutkan.

Cuplikan layar panel Data pelatihan untuk wizard Buat model kustom, dengan opsi file lokal.

Mengimpor data pelatihan dari penyimpanan Azure Blob

Anda dapat mengimpor himpunan data pelatihan dari Azure Blob atau lokasi web bersama lainnya dengan memberikan nama dan lokasi file.

  1. Masukkan Nama file untuk file tersebut.

  2. Untuk Lokasi file, berikan URL Azure Blob, tanda tangan akses bersama (SAS) Azure Storage, atau tautan lain ke lokasi web bersama yang dapat diakses.

  3. Pilih Unggah file untuk mengimpor himpunan data pelatihan ke layanan.

Setelah Anda memilih dan mengunggah himpunan data pelatihan, pilih Berikutnya untuk melanjutkan.

Cuplikan layar panel Data pelatihan untuk wizard Buat model kustom, dengan Azure Blob dan opsi lokasi web bersama.

Pilih data validasi Anda

Langkah berikutnya menyediakan opsi untuk mengonfigurasi model untuk menggunakan data validasi dalam proses pelatihan. Jika Anda tidak ingin menggunakan data validasi, Anda dapat memilih Berikutnya untuk melanjutkan ke opsi tingkat lanjut untuk model. Jika tidak, jika Anda memiliki himpunan data validasi, Anda dapat memilih data validasi yang sudah disiapkan atau mengunggah data validasi baru yang disiapkan untuk digunakan saat menyesuaikan model Anda.

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

Cuplikan layar panel Data validasi untuk wizard Buat model kustom di Azure OpenAI Studio.

Untuk file data besar, kami sarankan Anda mengimpor dari penyimpanan Azure Blob. File besar dapat menjadi tidak stabil saat diunggah melalui formulir multi bagian, karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan.

Catatan

Mirip dengan file data pelatihan, file data validasi harus diformat sebagai file JSONL, dikodekan dalam UTF-8 dengan tanda urutan byte (BOM). Ukuran file harus kurang dari 512 MB.

Mengunggah data validasi dari file lokal

Anda dapat mengunggah himpunan data validasi baru ke layanan dari file lokal dengan menggunakan salah satu metode berikut:

  • Seret dan letakkan file ke area klien panel Data validasi, lalu pilih Unggah file.

  • Pilih Telusuri file dari area klien panel Data validasi, pilih file yang akan diunggah dari dialog Buka , lalu pilih Unggah file.

Setelah Anda memilih dan mengunggah himpunan data validasi, pilih Berikutnya untuk melanjutkan.

Cuplikan layar panel Data validasi untuk wizard Buat model kustom, dengan opsi file lokal.

Mengimpor data validasi dari penyimpanan Azure Blob

Anda dapat mengimpor himpunan data validasi dari Azure Blob atau lokasi web bersama lainnya dengan memberikan nama dan lokasi file.

  1. Masukkan Nama file untuk file tersebut.

  2. Untuk Lokasi file, berikan URL Azure Blob, tanda tangan akses bersama (SAS) Azure Storage, atau tautan lain ke lokasi web bersama yang dapat diakses.

  3. Pilih Unggah file untuk mengimpor himpunan data pelatihan ke layanan.

Setelah Anda memilih dan mengunggah himpunan data validasi, pilih Berikutnya untuk melanjutkan.

Cuplikan layar panel Data validasi untuk wizard Buat model kustom, dengan Azure Blob dan opsi lokasi web bersama.

Konfigurasikan opsi lanjutan

Wizard Buat model kustom memperlihatkan hiperparameter untuk melatih model yang disempurnakan pada panel Opsi tingkat lanjut. Hyperparameter berikut tersedia:

Nama Jenis Keterangan
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 telah menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar. Nilai default serta nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varians yang lebih rendah.
learning_rate_multiplier number Pengali tingkat pembelajaran yang akan digunakan untuk pelatihan. Tingkat pembelajaran penyesuaian 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 mungkin berguna untuk menghindari overfitting.
n_epochs Integer Jumlah epoch untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.

Cuplikan layar panel Opsi tingkat lanjut untuk wizard Buat model kustom, dengan opsi default dipilih.

Pilih Default untuk menggunakan nilai default untuk pekerjaan penyempurnaan, atau pilih Tingkat Lanjut untuk menampilkan dan mengedit nilai hyperparameter. Saat default dipilih, kami menentukan nilai yang benar secara algoritma berdasarkan data pelatihan Anda.

Setelah Mengonfigurasi opsi lanjutan, pilih Berikutnya untuk meninjau pilihan Anda dan melatih model yang disempurnakan.

Tinjau pilihan Anda dan latih model Anda

Panel Tinjau wizard menampilkan informasi tentang pilihan konfigurasi Anda.

Cuplikan layar panel Tinjau untuk wizard Buat model kustom di Azure OpenAI Studio.

Jika Anda siap untuk melatih model Anda, pilih Mulai pekerjaan Pelatihan untuk memulai pekerjaan penyempurnaan dan kembali ke panel Model .

Periksa status model kustom Anda

Panel Model menampilkan informasi tentang model kustom Anda di tab Model yang dikustomisasi . Tab menyertakan informasi tentang status dan ID pekerjaan pekerjaan yang menyempurnakan untuk model kustom Anda. Ketika pekerjaan selesai, tab menampilkan ID file dari file hasil. Anda mungkin perlu memilih Refresh untuk melihat status yang diperbarui untuk pekerjaan pelatihan model.

Cuplikan layar panel Model dari Azure OpenAI Studio, dengan model kustom ditampilkan.

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

Berikut adalah beberapa tugas yang bisa Anda lakukan di panel Model :

  • Periksa status pekerjaan penyempurnaan untuk model kustom Anda di kolom Status tab Model yang dikustomisasi .

  • Di kolom Nama model, pilih nama model untuk melihat informasi selengkapnya tentang model kustom. Anda dapat melihat status pekerjaan penyempurnaan, hasil pelatihan, peristiwa pelatihan, dan hiperparameter yang digunakan dalam pekerjaan.

  • Pilih Unduh file pelatihan untuk mengunduh data pelatihan yang Anda gunakan untuk model.

  • Pilih Unduh hasil untuk mengunduh file hasil yang dilampirkan ke pekerjaan penyempurnaan untuk model Anda dan analisis model kustom Anda untuk performa pelatihan dan validasi.

  • Pilih Refresh untuk memperbarui informasi di halaman.

Cuplikan layar panel Model di Azure OpenAI Studio, dengan model kustom ditampilkan.

Menyebarkan model kustom

Saat pekerjaan penyempurnaan berhasil, Anda dapat menyebarkan model kustom dari panel Model . Anda harus menyebarkan model kustom agar tersedia untuk digunakan dengan panggilan penyelesaian.

Penting

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

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model yang dikustomisasi yang mendasar, dan model yang disesuaikan dapat disebarkan ulang kapan saja. Seperti yang dijelaskan dalam harga Azure OpenAI Service, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian atau panggilan penyelesaian obrolan sedang dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat panduan dalam Rencanakan untuk mengelola biaya untuk Azure OpenAI Service.

Catatan

Hanya satu penyebaran yang diizinkan untuk model kustom. Pesan kesalahan ditampilkan jika Anda memilih model kustom yang sudah disebarkan.

Untuk menyebarkan model kustom Anda, pilih model kustom yang akan disebarkan, lalu pilih Sebarkan model.

Cuplikan layar yang memperlihatkan cara menyebarkan model kustom di Azure OpenAI Studio.

Kotak dialog Sebarkan model terbuka. Dalam kotak dialog, masukkan Nama penyebaran Anda lalu pilih Buat untuk memulai penyebaran model kustom Anda.

Cuplikan layar dialog Sebarkan Model di Azure OpenAI Studio.

Anda dapat memantau kemajuan penyebaran Anda di panel Penyebaran di Azure OpenAI Studio.

Penyebaran lintas wilayah

Penyempurnaan mendukung penyebaran model yang disempurnakan ke wilayah yang berbeda dari tempat model awalnya disempurnakan. Anda juga dapat menyebarkan ke langganan/wilayah yang berbeda.

Satu-satunya batasan adalah bahwa wilayah baru juga harus mendukung penyempurnaan dan saat menyebarkan langganan silang, akun yang menghasilkan token otorisasi untuk penyebaran harus memiliki akses ke langganan sumber dan tujuan.

Penyebaran lintas langganan/wilayah dapat dilakukan melalui Python atau REST.

Menggunakan model kustom yang disebarkan

Setelah model kustom Anda disebarkan, Anda dapat menggunakannya seperti model lain yang disebarkan. Anda dapat menggunakan Playground di Azure OpenAI Studio untuk bereksperimen dengan penyebaran baru Anda. Anda dapat terus menggunakan parameter yang sama dengan model kustom Anda, seperti dan max_tokens, seperti temperature yang Anda bisa dengan model lain yang disebarkan. Untuk penyempurnaan babbage-002 dan davinci-002 model, Anda akan menggunakan taman bermain Penyelesaian dan API Penyelesaian. Untuk model yang disempurnakan gpt-35-turbo-0613 , Anda akan menggunakan taman bermain Obrolan dan API penyelesaian Obrolan.

Cuplikan layar panel Playground di Azure OpenAI Studio, dengan bagian disorot.

Menganalisis model kustom 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 untuk Azure OpenAI Studio. Anda dapat menggunakan ID file untuk mengidentifikasi dan mengunduh file hasil dari panel File data Azure OpenAI Studio.

File hasil adalah file CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan oleh pekerjaan penyempurnaan. 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.
training_accuracy Persentase penyelesaian dalam batch pelatihan di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Persentase token dalam batch pelatihan diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Kerugian untuk batch validasi.
valid_accuracy Persentase penyelesaian dalam batch validasi di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Persentase token dalam batch validasi diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].

Anda juga dapat melihat data dalam file results.csv Anda sebagai plot di Azure OpenAI Studio. Pilih tautan untuk model terlatih Anda, dan Anda akan melihat tiga bagan: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data akan muncul pada plot yang sama.

Carilah kerugian Anda untuk menurun dari waktu ke waktu, dan akurasi Anda meningkat. Jika Anda melihat divergensi antara data pelatihan dan validasi Anda, yang mungkin menunjukkan bahwa Anda overfitting. Coba pelatihan dengan lebih sedikit epoch, atau pengali tingkat pembelajaran yang lebih kecil.

Membersihkan penyebaran, model kustom, dan file pelatihan Anda

Setelah selesai dengan model kustom, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika diperlukan.

Hapus penyebaran model Anda

Penting

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

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model yang dikustomisasi yang mendasar, dan model yang disesuaikan dapat disebarkan ulang kapan saja. Seperti yang dijelaskan dalam harga Azure OpenAI Service, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian atau panggilan penyelesaian obrolan sedang dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat panduan dalam Rencanakan untuk mengelola biaya untuk Azure OpenAI Service.

Anda dapat menghapus penyebaran untuk model kustom Anda di panel Penyebaran di Azure OpenAI Studio. Pilih penyebaran yang akan dihapus, lalu pilih Hapus untuk menghapus penyebaran.

Menghapus model kustom Anda

Anda dapat menghapus model kustom di panel Model di Azure OpenAI Studio. Pilih model kustom yang akan dihapus dari tab Model yang dikustomisasi , lalu pilih Hapus untuk menghapus model kustom.

Catatan

Anda tidak dapat menghapus model kustom jika memiliki penyebaran yang sudah ada. Anda harus terlebih dahulu 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, dan file hasil yang dihasilkan selama pelatihan, pada panel File data manajemen>di Azure OpenAI Studio. Pilih file yang akan dihapus, lalu pilih Hapus untuk menghapus file.

Penyempurnaan berkelanjutan

Setelah Anda 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 telah Disempurnakan, Anda akan menggunakan proses yang sama seperti yang dijelaskan dalam membuat model yang disesuaikan tetapi alih-alih menentukan nama model dasar generik, Anda akan menentukan model yang sudah disempurnakan. Model kustom yang disempurnakan akan terlihat seperti gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

Cuplikan layar UI Buat model kustom dengan model yang disempurnakan disorot.

Sebaiknya sertakan suffix parameter untuk mempermudah membedakan antara iterasi yang berbeda dari model yang disempurnakan. suffix mengambil string, dan diatur untuk mengidentifikasi model yang disempurnakan. Dengan OpenAI Python API, string hingga 18 karakter didukung yang akan ditambahkan ke nama model yang disempurnakan.

Prasyarat

  • Baca panduan Penghalusan Kapan menggunakan Azure OpenAI.
  • Langganan Azure. Buat akun gratis.
  • Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan.
  • Sumber daya Azure OpenAI. Untuk informasi selengkapnya, lihat Membuat sumber daya dan menyebarkan model dengan Azure OpenAI.
  • Pustaka Python berikut: os, , json, requestsopenai.
  • Pustaka OpenAI Python harus setidaknya versi 0.28.1.
  • Akses penyempurnaan memerlukan Kontributor OpenAI Cognitive Services.
  • Jika Anda belum memiliki akses untuk melihat kuota, dan menyebarkan model di Azure OpenAI Studio, Anda akan memerlukan izin tambahan.

Catatan

Saat ini, Anda harus mengirimkan aplikasi untuk mengakses Layanan Azure OpenAI. Untuk mengajukan akses, lengkapi formulir ini.

Model

Model berikut mendukung penyempurnaan:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

Atau Anda dapat menyempurnakan model yang sebelumnya disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Cuplikan layar opsi model dengan model kustom yang disempurnakan.

Lihat halaman model untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan.

Meninjau alur kerja untuk Python SDK

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan Python SDK 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 disesuaikan.
  6. Sebarkan model yang disesuaikan untuk digunakan.
  7. Gunakan model yang disesuaikan.
  8. Secara opsional, analisis model yang disesuaikan untuk performa dan kecocokan.

Menyiapkan data pelatihan dan validasi Anda

Himpunan data pelatihan dan validasi Anda terdiri dari contoh input dan output untuk bagaimana Anda ingin model melakukan.

Jenis model yang berbeda memerlukan format data pelatihan yang berbeda.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Untuk gpt-35-turbo-0613 himpunan data penyempurnaan harus diformat dalam format percakapan yang digunakan oleh API penyelesaian obrolan.

Jika Anda ingin panduan langkah demi langkah dari penyempurnaan, gpt-35-turbo-0613 silakan lihat tutorial penyempurnaan Azure OpenAI

Contoh format file

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Format file obrolan multi-giliran

Beberapa giliran percakapan dalam satu baris file pelatihan jsonl Anda juga didukung. Untuk melewati penyempurnaan pada pesan asisten tertentu, tambahkan pasangan nilai kunci 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 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}]}

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

Membuat himpunan data pelatihan dan validasi Anda

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

Secara umum, menggandakan ukuran himpunan data dapat menyebabkan peningkatan linier dalam kualitas model. Tetapi perlu diingat, contoh kualitas rendah dapat berdampak negatif pada performa. Jika Anda melatih model pada sejumlah besar data internal, tanpa terlebih dahulu memangkas himpunan data hanya untuk contoh kualitas tertinggi, Anda dapat berakhir dengan model yang berkinerja jauh 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 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 penyimpanan Azure Blob. File besar dapat menjadi tidak stabil saat diunggah melalui formulir multi bagian, karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan. Untuk informasi selengkapnya tentang penyimpanan Azure Blob, lihat Apa itu penyimpanan Azure Blob?

Catatan

File data pelatihan harus diformat sebagai file JSONL, dikodekan dalam UTF-8 dengan tanda urutan byte (BOM). Ukuran file harus kurang dari 512 MB.

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

# Upload fine-tuning files

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

# Upload the training and validation dataset files to Azure OpenAI with the SDK.

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

validation_response = client.files.create(
    file=open(validation_file_name, "rb"), purpose="fine-tune"
)
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 Python SDK:

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

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

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

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 didukung saat ini untuk penyempurnaan adalah:

Nama Jenis Keterangan
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 telah menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar. Nilai default serta nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varians yang lebih rendah.
learning_rate_multiplier number Pengali tingkat pembelajaran yang akan digunakan untuk pelatihan. Tingkat pembelajaran penyesuaian 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.
n_epochs Integer Jumlah epoch untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.

Untuk mengatur hyperparameter kustom dengan versi 1.x dari OpenAI Python API:

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
  hyperparameters={
    "n_epochs":2
  }
)

Periksa status pekerjaan penyempurnaan

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

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

Menyebarkan model yang dikustomisasi

Ketika pekerjaan penyempurnaan berhasil, nilai fine_tuned_model variabel dalam isi respons diatur ke nama model yang disesuaikan. Model Anda sekarang juga tersedia untuk penemuan dari daftar Model API. Namun, Anda tidak dapat mengeluarkan panggilan penyelesaian ke model yang disesuaikan hingga model yang disesuaikan disebarkan. Anda harus menyebarkan model yang disesuaikan agar tersedia untuk digunakan dengan panggilan penyelesaian.

Penting

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

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model yang dikustomisasi yang mendasar, dan model yang disesuaikan dapat disebarkan ulang kapan saja. Seperti yang dijelaskan dalam harga Azure OpenAI Service, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian atau panggilan penyelesaian obrolan sedang dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat panduan dalam Rencanakan untuk mengelola biaya untuk Azure OpenAI Service.

Anda dapat menggunakan Azure OpenAI atau Azure CLI untuk menyebarkan model yang disesuaikan.

Catatan

Hanya satu penyebaran yang diizinkan untuk model yang disesuaikan. Kesalahan terjadi jika Anda memilih model kustomisasi yang sudah disebarkan.

Menyebarkan model yang disempurnakan

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

variabel Definisi
token Ada beberapa cara untuk menghasilkan token otorisasi. Metode term mudah untuk pengujian awal adalah meluncurkan 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 ini dalam variabel lingkungan baru
langganan ID langganan untuk sumber daya Azure OpenAI terkait
resource_group Nama grup sumber daya untuk sumber daya Azure OpenAI Anda
resource_name Nama sumber daya Azure OpenAI
model_deployment_name Nama kustom untuk penyebaran model baru yang disempurnakan. Ini adalah nama yang akan direferensikan dalam kode Anda saat melakukan panggilan penyelesaian obrolan.
fine_tuned_model Ambil nilai ini dari pekerjaan penyempurnaan Anda menghasilkan langkah sebelumnya. Ini akan terlihat seperti gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Anda harus menambahkan nilai tersebut ke json deploy_data.
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-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
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 will look like gpt-35-turbo-0613.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())

Penyebaran lintas wilayah

Penyempurnaan mendukung penyebaran model yang disempurnakan ke wilayah yang berbeda dari tempat model awalnya disempurnakan. Anda juga dapat menyebarkan ke langganan/wilayah yang berbeda.

Satu-satunya batasan adalah bahwa wilayah baru juga harus mendukung penyempurnaan dan saat menyebarkan langganan silang, akun yang menghasilkan token otorisasi untuk penyebaran harus memiliki akses ke langganan sumber dan tujuan.

Di bawah ini adalah contoh penyebaran model yang disempurnakan dalam satu langganan/wilayah ke langganan/wilayah lainnya.

import json
import os
import requests

token= os.getenv("<TOKEN>") 

subscription = "<DESTINATION_SUBSCRIPTION_ID>"  
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"

source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"


source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'

model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
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_NAME">, # This value will look like gpt-35-turbo-0613.ft-0ab3f80e4f2242929258fff45b56a9ce 
            "version": "1",
            "source": source
        }
    }
}
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 menyebarkan antara langganan yang sama, tetapi wilayah yang berbeda, Anda hanya akan memiliki grup langganan dan sumber daya yang identik untuk variabel sumber dan tujuan dan hanya nama sumber daya sumber dan tujuan yang harus unik.

Menyebarkan model dengan Azure CLI

Contoh berikut menunjukkan cara menggunakan Azure CLI untuk menyebarkan model yang disesuaikan. Dengan Azure CLI, Anda harus menentukan nama untuk penyebaran model yang disesuaikan. Untuk informasi selengkapnya tentang cara menggunakan Azure CLI untuk menyebarkan model yang disesuaikan, lihat az cognitiveservices account deployment.

Untuk menjalankan perintah Azure CLI ini di jendela konsol>, Anda harus mengganti tempat penampung berikut <dengan nilai yang sesuai untuk model yang disesuaikan:

Placeholder Nilai
<YOUR_AZURE_SUBSCRIPTION> Nama atau ID langganan Azure Anda.
<YOUR_RESOURCE_GROUP> Nama grup sumber daya Azure Anda.
<YOUR_RESOURCE_NAME> Nama Sumber Daya Azure OpenAI Anda.
<YOUR_DEPLOYMENT_NAME> Nama yang ingin Anda gunakan untuk penyebaran model Anda.
<YOUR_FINE_TUNED_MODEL_ID> Nama model yang disesuaikan.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Menggunakan model yang disesuaikan yang disebarkan

Setelah model kustom Anda disebarkan, Anda dapat menggunakannya seperti model lain yang disebarkan. Anda dapat menggunakan Playground di Azure OpenAI Studio untuk bereksperimen dengan penyebaran baru Anda. Anda dapat terus menggunakan parameter yang sama dengan model kustom Anda, seperti dan max_tokens, seperti temperature yang Anda bisa dengan model lain yang disebarkan. Untuk penyempurnaan babbage-002 dan davinci-002 model, Anda akan menggunakan taman bermain Penyelesaian dan API Penyelesaian. Untuk model yang disempurnakan gpt-35-turbo-0613 , Anda akan menggunakan taman bermain Obrolan dan API penyelesaian Obrolan.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

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 disesuaikan, dan Anda dapat menggunakan Python SDK untuk mengambil ID file dan mengunduh file hasil untuk analisis.

Contoh Python berikut mengambil ID file dari file hasil pertama yang dilampirkan ke pekerjaan penyempurnaan untuk model yang disesuaikan, lalu menggunakan Python SDK untuk mengunduh file ke direktori kerja Anda 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 hasil adalah file CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan oleh pekerjaan penyempurnaan. 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.
training_accuracy Persentase penyelesaian dalam batch pelatihan di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Persentase token dalam batch pelatihan diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Kerugian untuk batch validasi.
valid_accuracy Persentase penyelesaian dalam batch validasi di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Persentase token dalam batch validasi diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].

Anda juga dapat melihat data dalam file results.csv Anda sebagai plot di Azure OpenAI Studio. Pilih tautan untuk model terlatih Anda, dan Anda akan melihat tiga bagan: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data akan muncul pada plot yang sama.

Carilah kerugian Anda untuk menurun dari waktu ke waktu, dan akurasi Anda meningkat. Jika Anda melihat divergensi antara data pelatihan dan validasi Anda, yang mungkin menunjukkan bahwa Anda overfitting. Coba pelatihan dengan lebih sedikit epoch, atau pengali tingkat pembelajaran yang lebih kecil.

Membersihkan penyebaran, model yang disesuaikan, dan file pelatihan Anda

Setelah selesai dengan model yang disesuaikan, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika diperlukan.

Hapus penyebaran model Anda

Penting

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

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model yang dikustomisasi yang mendasar, dan model yang disesuaikan dapat disebarkan ulang kapan saja. Seperti yang dijelaskan dalam harga Azure OpenAI Service, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian atau panggilan penyelesaian obrolan sedang dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat panduan dalam Rencanakan untuk mengelola biaya untuk Azure OpenAI Service.

Anda dapat menggunakan berbagai metode untuk menghapus penyebaran untuk model yang disesuaikan:

Menghapus model yang dikustomisasi

Demikian pula, Anda dapat menggunakan berbagai metode untuk menghapus model yang disesuaikan:

Catatan

Anda tidak dapat menghapus model yang disesuaikan jika memiliki penyebaran yang sudah ada. Anda harus terlebih dahulu 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 Azure OpenAI 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 our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
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 our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Penyempurnaan berkelanjutan

Setelah Anda 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 telah Disempurnakan, Anda akan menggunakan proses yang sama seperti yang dijelaskan dalam membuat model yang disesuaikan tetapi alih-alih menentukan nama model dasar generik, Anda akan menentukan ID model yang sudah disempurnakan. ID model yang disempurnakan terlihat seperti gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  
)

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

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

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

Sebaiknya sertakan suffix parameter untuk mempermudah membedakan antara iterasi yang berbeda dari model yang disempurnakan. suffix mengambil string, dan diatur untuk mengidentifikasi model yang disempurnakan. Dengan OpenAI Python API, string hingga 18 karakter didukung yang akan ditambahkan ke nama model yang disempurnakan.

Jika Anda tidak yakin dengan ID model yang disempurnakan yang ada, informasi ini dapat ditemukan di halaman Model Azure OpenAI Studio, atau Anda dapat membuat daftar model untuk sumber daya Azure OpenAI tertentu menggunakan REST API.

Prasyarat

  • Baca panduan Penghalusan Kapan menggunakan Azure OpenAI.
  • Langganan Azure. Buat akun gratis.
  • Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan.
  • Sumber daya Azure OpenAI. Untuk informasi selengkapnya, lihat Membuat sumber daya dan menyebarkan model dengan Azure OpenAI.
  • Akses penyempurnaan memerlukan Kontributor OpenAI Cognitive Services.
  • Jika Anda belum memiliki akses untuk melihat kuota, dan menyebarkan model di Azure OpenAI Studio, Anda akan memerlukan izin tambahan.

Catatan

Saat ini, Anda harus mengirimkan aplikasi untuk mengakses Layanan Azure OpenAI. Untuk mengajukan akses, lengkapi formulir ini.

Model

Model berikut mendukung penyempurnaan:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

Lihat halaman model untuk memeriksa wilayah mana yang saat ini mendukung penyempurnaan.

Tinjau alur kerja untuk REST API

Luangkan waktu sejenak untuk meninjau alur kerja penyempurnaan untuk menggunakan REST APIS 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 disesuaikan.
  6. Sebarkan model yang disesuaikan untuk digunakan.
  7. Gunakan model yang disesuaikan.
  8. Secara opsional, analisis model yang disesuaikan untuk performa dan kecocokan.

Menyiapkan data pelatihan dan validasi Anda

Himpunan data pelatihan dan validasi Anda terdiri dari contoh input dan output untuk bagaimana Anda ingin model melakukan.

Jenis model yang berbeda memerlukan format data pelatihan yang berbeda.

Data pelatihan dan validasi yang Anda gunakan harus diformat sebagai dokumen JSON Lines (JSONL). Untuk gpt-35-turbo-0613 dan model terkait lainnya, himpunan data penyempurnaan harus diformat dalam format percakapan yang digunakan oleh API penyelesaian obrolan.

Jika Anda ingin panduan langkah demi langkah dari penyempurnaan, gpt-35-turbo-0613 silakan lihat tutorial penyempurnaan Azure OpenAI

Contoh format file

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Format file obrolan multi-giliran

Beberapa giliran percakapan dalam satu baris file pelatihan jsonl Anda juga didukung. Untuk melewati penyempurnaan pada pesan asisten tertentu, tambahkan pasangan nilai kunci 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 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}]}

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

Membuat himpunan data pelatihan dan validasi Anda

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

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

Pilih model dasar

Langkah pertama dalam membuat model kustom adalah memilih model dasar. Panel Model dasar memungkinkan Anda memilih model dasar yang akan digunakan untuk model kustom Anda. Pilihan Anda memengaruhi performa dan biaya model Anda.

Pilih model dasar dari dropdown Jenis model dasar, lalu pilih Berikutnya untuk melanjutkan.

Anda dapat membuat model kustom dari salah satu model dasar berikut yang tersedia:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)

Atau Anda dapat menyempurnakan model yang sebelumnya disempurnakan, yang diformat sebagai base-model.ft-{jobid}.

Cuplikan layar opsi model dengan model kustom yang disempurnakan.

Untuk informasi selengkapnya tentang model dasar kami yang dapat disempurnakan, lihat Model.

Mengunggah data pelatihan Anda

Langkah selanjutnya adalah memilih data pelatihan yang sudah disiapkan atau mengunggah data pelatihan baru yang disiapkan untuk digunakan saat menyempurnakan 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 penyimpanan Azure Blob. File besar dapat menjadi tidak stabil saat diunggah melalui formulir multi bagian, karena permintaannya atomik dan tidak dapat dicoba kembali atau dilanjutkan. Untuk informasi selengkapnya tentang penyimpanan Azure Blob, lihat Apa itu penyimpanan Azure Blob?

Catatan

File data pelatihan harus diformat sebagai file JSONL, dikodekan dalam UTF-8 dengan tanda urutan byte (BOM). Ukuran file harus kurang dari 512 MB.

Mengunggah data pelatihan

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -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/files?api-version=2023-12-01-preview \
  -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 REST API:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "'<VALIDATION_FILE_ID>"
}'

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 didukung saat ini untuk penyempurnaan adalah:

Nama Jenis Keterangan
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 telah menemukan bahwa ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar. Nilai default serta nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varians yang lebih rendah.
learning_rate_multiplier number Pengali tingkat pembelajaran yang akan digunakan untuk pelatihan. Tingkat pembelajaran penyesuaian 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.
n_epochs Integer Jumlah epoch untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.

Periksa status model yang dikustomisasi

Setelah Anda memulai pekerjaan yang menyempurnakan, perlu waktu untuk menyelesaikannya. Pekerjaan Anda mungkin diantrekan di belakang pekerjaan lain dalam sistem. Melatih model Anda dapat memakan waktu beberapa menit atau berjam-jam tergantung pada model dan ukuran himpunan data. Contoh berikut menggunakan REST API untuk memeriksa status pekerjaan penyempurnaan Anda. Contoh mengambil informasi tentang pekerjaan Anda dengan menggunakan ID pekerjaan yang dikembalikan dari contoh sebelumnya:

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2023-12-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Menyebarkan model yang dikustomisasi

Penting

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

Penghapusan penyebaran yang tidak aktif tidak menghapus atau memengaruhi model yang dikustomisasi yang mendasar, dan model yang disesuaikan dapat disebarkan ulang kapan saja. Seperti yang dijelaskan dalam harga Azure OpenAI Service, setiap model yang disesuaikan (disempurnakan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah penyelesaian atau panggilan penyelesaian obrolan sedang dilakukan ke model. Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Azure OpenAI, lihat panduan dalam Rencanakan untuk mengelola biaya untuk Azure OpenAI Service.

Contoh Python berikut menunjukkan cara menggunakan REST API untuk membuat penyebaran model untuk model yang disesuaikan. REST API menghasilkan nama untuk penyebaran model yang disesuaikan.

variabel Definisi
token Ada beberapa cara untuk menghasilkan token otorisasi. Metode term mudah untuk pengujian awal adalah meluncurkan 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 ini dalam variabel lingkungan baru
langganan ID langganan untuk sumber daya Azure OpenAI terkait
resource_group Nama grup sumber daya untuk sumber daya Azure OpenAI Anda
resource_name Nama sumber daya Azure OpenAI
model_deployment_name Nama kustom untuk penyebaran model baru yang disempurnakan. Ini adalah nama yang akan direferensikan dalam kode Anda saat melakukan panggilan penyelesaian obrolan.
fine_tuned_model Ambil nilai ini dari pekerjaan penyempurnaan Anda menghasilkan langkah sebelumnya. Ini akan terlihat seperti gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Anda harus menambahkan nilai tersebut ke json deploy_data.
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -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"
        }
    }
}'

Penyebaran lintas wilayah

Penyempurnaan mendukung penyebaran model yang disempurnakan ke wilayah yang berbeda dari tempat model awalnya disempurnakan. Anda juga dapat menyebarkan ke langganan/wilayah yang berbeda.

Satu-satunya batasan adalah bahwa wilayah baru juga harus mendukung penyempurnaan dan saat menyebarkan langganan silang, akun yang menghasilkan token otorisasi untuk penyebaran harus memiliki akses ke langganan sumber dan tujuan.

Di bawah ini adalah contoh penyebaran model yang disempurnakan dalam satu langganan/wilayah ke langganan/wilayah lainnya.

curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -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",
            "source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}" 
        }
    }
}'

Untuk menyebarkan antara langganan yang sama, tetapi wilayah yang berbeda, Anda hanya akan memiliki grup langganan dan sumber daya yang identik untuk variabel sumber dan tujuan dan hanya nama sumber daya sumber dan tujuan yang harus unik.

Menyebarkan model dengan Azure CLI

Contoh berikut menunjukkan cara menggunakan Azure CLI untuk menyebarkan model yang disesuaikan. Dengan Azure CLI, Anda harus menentukan nama untuk penyebaran model yang disesuaikan. Untuk informasi selengkapnya tentang cara menggunakan Azure CLI untuk menyebarkan model yang disesuaikan, lihat az cognitiveservices account deployment.

Untuk menjalankan perintah Azure CLI ini di jendela konsol>, Anda harus mengganti tempat penampung berikut <dengan nilai yang sesuai untuk model yang disesuaikan:

Placeholder Nilai
<YOUR_AZURE_SUBSCRIPTION> Nama atau ID langganan Azure Anda.
<YOUR_RESOURCE_GROUP> Nama grup sumber daya Azure Anda.
<YOUR_RESOURCE_NAME> Nama Sumber Daya Azure OpenAI Anda.
<YOUR_DEPLOYMENT_NAME> Nama yang ingin Anda gunakan untuk penyebaran model Anda.
<YOUR_FINE_TUNED_MODEL_ID> Nama model yang disesuaikan.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Menggunakan model yang disesuaikan yang disebarkan

Setelah model kustom Anda disebarkan, Anda dapat menggunakannya seperti model lain yang disebarkan. Anda dapat menggunakan Playground di Azure OpenAI Studio untuk bereksperimen dengan penyebaran baru Anda. Anda dapat terus menggunakan parameter yang sama dengan model kustom Anda, seperti dan max_tokens, seperti temperature yang Anda bisa dengan model lain yang disebarkan. Untuk penyempurnaan babbage-002 dan davinci-002 model, Anda akan menggunakan taman bermain Penyelesaian dan API Penyelesaian. Untuk model yang disempurnakan gpt-35-turbo-0613 , Anda akan menggunakan taman bermain Obrolan dan API penyelesaian Obrolan.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

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 disesuaikan, dan 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, lalu mengunduh file ke direktori kerja Anda untuk analisis.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

File hasil adalah file CSV yang berisi baris header dan baris untuk setiap langkah pelatihan yang dilakukan oleh pekerjaan penyempurnaan. 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.
training_accuracy Persentase penyelesaian dalam batch pelatihan di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Persentase token dalam batch pelatihan diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
valid_loss Kerugian untuk batch validasi.
valid_accuracy Persentase penyelesaian dalam batch validasi di mana token model yang diprediksi sama persis dengan token penyelesaian sebenarnya.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,67 (2 dari 3) jika model diprediksi [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Persentase token dalam batch validasi diprediksi dengan benar oleh model.
Misalnya, jika ukuran batch diatur ke 3 dan data Anda berisi penyelesaian [[1, 2], [0, 5], [4, 2]], nilai ini diatur ke 0,83 (5 dari 6) jika model diprediksi [[1, 1], [0, 5], [4, 2]].

Anda juga dapat melihat data dalam file results.csv Anda sebagai plot di Azure OpenAI Studio. Pilih tautan untuk model terlatih Anda, dan Anda akan melihat tiga bagan: kehilangan, akurasi token rata-rata, dan akurasi token. Jika Anda memberikan data validasi, kedua himpunan data akan muncul pada plot yang sama.

Carilah kerugian Anda untuk menurun dari waktu ke waktu, dan akurasi Anda meningkat. Jika Anda melihat divergensi antara data pelatihan dan validasi Anda, yang mungkin menunjukkan bahwa Anda overfitting. Coba pelatihan dengan lebih sedikit epoch, atau pengali tingkat pembelajaran yang lebih kecil.

Membersihkan penyebaran, model yang disesuaikan, dan file pelatihan Anda

Setelah selesai dengan model yang disesuaikan, Anda dapat menghapus penyebaran dan model. Anda juga dapat menghapus file pelatihan dan validasi yang Anda unggah ke layanan, jika diperlukan.

Hapus penyebaran model Anda

Anda dapat menggunakan berbagai metode untuk menghapus penyebaran untuk model yang disesuaikan:

Menghapus model yang dikustomisasi

Demikian pula, Anda dapat menggunakan berbagai metode untuk menghapus model yang disesuaikan:

Catatan

Anda tidak dapat menghapus model yang disesuaikan jika memiliki penyebaran yang sudah ada. Anda harus terlebih dahulu 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 Azure OpenAI Anda. Anda dapat menggunakan metode berikut untuk menghapus file pelatihan, validasi, dan hasil Anda:

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 telah Disempurnakan, Anda akan menggunakan proses yang sama seperti yang dijelaskan dalam membuat model yang disesuaikan tetapi alih-alih menentukan nama model dasar generik, Anda akan menentukan ID model yang sudah disempurnakan. ID model yang disempurnakan terlihat seperti gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

Sebaiknya sertakan suffix parameter untuk mempermudah membedakan antara iterasi yang berbeda dari model yang disempurnakan. suffix mengambil string, dan diatur untuk mengidentifikasi model yang disempurnakan. Akhiran dapat berisi hingga 40 karakter (a-z, A-Z, 0-9,- dan _) yang akan ditambahkan ke nama model yang disempurnakan.

Jika Anda tidak yakin dengan ID model yang disempurnakan, informasi ini dapat ditemukan di halaman Model Azure OpenAI Studio, atau Anda dapat membuat daftar model untuk sumber daya Azure OpenAI tertentu menggunakan REST API.

Pemecahan Masalah

Bagaimana cara mengaktifkan penyempurnaan? Membuat model kustom berwarna abu-abu di Azure OpenAI Studio?

Agar berhasil mengakses penyempurnaan, Anda memerlukan Kontributor OpenAI Cognitive Services yang ditetapkan. Bahkan seseorang dengan izin Administrator Layanan tingkat tinggi masih memerlukan akun ini secara eksplisit diatur untuk mengakses penyempurnaan. Untuk informasi selengkapnya, silakan tinjau panduan kontrol akses berbasis peran.

Mengapa unggahan saya gagal?

Jika pengunggahan file gagal, Anda dapat melihat pesan kesalahan di bawah "file data" di Azure OpenAI Studio. Arahkan mouse Anda ke tempat bertuliskan "kesalahan" (di bawah kolom status) dan penjelasan tentang kegagalan akan ditampilkan.

Cuplikan layar pesan kesalahan penyempurnaan.

Model saya yang disempurnakan tampaknya tidak meningkat

  • Pesan sistem yang hilang: Anda perlu memberikan pesan sistem saat menyempurnakan; Anda akan ingin memberikan pesan sistem yang sama saat Anda menggunakan model yang disempurnakan. Jika Anda memberikan pesan sistem yang berbeda, Anda mungkin melihat hasil yang berbeda dari yang Anda sesuaikan.

  • Tidak cukup data: meskipun 10 adalah minimum untuk alur berjalan, Anda memerlukan ratusan hingga ribuan poin data untuk mengajarkan model keterampilan baru. Terlalu sedikit titik data berisiko overfitting dan generalisasi yang buruk. Model Anda yang disempurnakan mungkin berkinerja baik pada data pelatihan, tetapi buruk pada data lain karena telah menghafal contoh pelatihan alih-alih pola pembelajaran. Untuk hasil terbaik, rencanakan untuk menyiapkan himpunan data dengan ratusan atau ribuan titik data.

  • Data buruk: Himpunan data yang dikumpulkan dengan buruk atau tidak terwakili akan menghasilkan model berkualitas rendah. Model Anda mungkin mempelajari pola yang tidak akurat atau bias dari himpunan data Anda. Misalnya, jika Anda melatih chatbot untuk layanan pelanggan, tetapi hanya menyediakan data pelatihan untuk satu skenario (misalnya item kembali) tidak akan tahu cara menanggapi skenario lain. Atau, jika data pelatihan Anda buruk (berisi respons yang salah), model Anda akan belajar untuk memberikan hasil yang salah.

Langkah berikutnya

  • Jelajahi kemampuan penyempurnaan dalam tutorial penyempurnaan Azure OpenAI.
  • Meninjau ketersediaan regional model penyempurnaan