Bagikan melalui


Menyempurnakan model dengan menggunakan penyebaran API tanpa server di Microsoft Foundry (klasik)

Hanya berlaku untuk:Portal Foundry (klasik). Artikel ini tidak tersedia untuk portal Foundry baru. Pelajari selengkapnya tentang portal baru.

Nota

Tautan dalam artikel ini mungkin membuka konten dalam dokumentasi Microsoft Foundry baru alih-alih dokumentasi Foundry (klasik) yang Anda lihat sekarang.

Penting

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

Pelajari cara menyebarkan model yang disempurnakan dengan menggunakan penyebaran API tanpa server di Microsoft Foundry. Panduan komprehensif ini menunjukkan kepada Anda cara menyempurnakan model bahasa besar (LLM) ke himpunan data spesifik Anda dan menyebarkannya dengan infrastruktur tanpa server, menawarkan peningkatan performa, efisiensi biaya, mengurangi latensi, dan output yang disesuaikan.

Efisiensi biaya: Penyempurnaan Foundry dapat lebih hemat biaya, terutama untuk penyebaran skala besar, berkat harga bayar sesuai pemakaian.

Variasi Model: Penyempurnaan API tanpa server Foundry menawarkan dukungan untuk model tertutup dan sumber terbuka, memberi pengguna fleksibilitas untuk memilih model yang paling sesuai dengan kebutuhan mereka tanpa dibatasi pada satu jenis saja.

Kustomisasi dan kontrol: Foundry memberikan penyesuaian dan kontrol yang lebih besar atas proses penyempurnaan, yang memungkinkan pengguna untuk menyesuaikan model dengan lebih tepat dengan persyaratan spesifik mereka.

Artikel ini menjelaskan cara menyempurnakan model yang disebarkan menggunakan penyebaran API tanpa server di Foundry.

Prasyarat

  • Sebuah proyek Foundry.

  • Azure kontrol akses berbasis peran (Azure RBAC) digunakan untuk memberikan akses ke operasi di portal Foundry. Untuk melakukan langkah-langkah dalam artikel ini, akun pengguna Anda harus diberi peran Owner atau Contributor untuk langganan Azure. Untuk informasi selengkapnya tentang izin, lihat kontrol akses berbasis peran di portal Foundry.

Memverifikasi pendaftaran penyedia langganan

Verifikasi bahwa langganan Anda terdaftar ke Microsoft. Jaringan penyedia sumber daya.

  1. Masuk ke portal Azure.
  2. Pilih langganan yang ingin Anda gunakan.
  3. Di bawah Pengaturan di menu bilah samping, pilih Penyedia sumber daya.
  4. Pilih Microsoft. Jaringan dan pilih Register jika tidak terdaftar.

Temukan model dengan dukungan penyesuaian

Katalog model Foundry menawarkan dukungan penyempurnaan untuk beberapa jenis model, termasuk penyelesaian obrolan dan pembuatan teks. Untuk daftar model dan wilayah yang mendukung penyempurnaan, lihat ketersediaan wilayah untuk model di API tanpa server.

Tugas penyempurnaan hanya tersedia bagi pengguna yang memiliki langganan Azure yang terdaftar pada akun penagihan di wilayah tempat penyedia model menawarkan layanan tersebut. Jika penawaran tersedia di wilayah yang relevan, pengguna harus memiliki sumber daya proyek di wilayah Azure tempat model tersedia untuk penyebaran atau penyempurnaan, sebagaimana berlaku.

Buka portal Foundry untuk melihat semua model yang berisi dukungan penyempurnaan:

  1. Masuk ke Microsoft Foundry. Pastikan tombol New Foundry nonaktif. Langkah-langkah ini mengacu pada Foundry (klasik).

  2. Jika Anda belum berada di project Anda, pilih ini.

  3. Navigasikan ke katalog model.

  4. Pilih filter Tugas penyempurnaan .

    Cuplikan layar opsi filter penyempurnaan katalog model.

  5. Pilih Semua atau pilih tugas tertentu.

Menyiapkan data untuk penyempurnaan

Siapkan data pelatihan dan validasi Anda untuk menyesuaikan model Anda. Data pelatihan dan validasi Anda terdiri dari contoh input dan output tentang performa model yang Anda inginkan.

Pastikan semua contoh pelatihan Anda mengikuti format yang diharapkan untuk inferensi. Untuk menyempurnakan model secara efektif, pastikan himpunan data yang beragam dengan mempertahankan keseimbangan data, termasuk berbagai skenario, dan menyempurnakan data pelatihan secara berkala agar selaras dengan harapan dunia nyata. Tindakan ini pada akhirnya menyebabkan respons model yang lebih akurat dan seimbang.

Petunjuk / Saran

Jenis model yang berbeda memerlukan data pelatihan dalam format yang berbeda.

Contoh format file

Jenis file yang didukung adalah JSON Lines (JSONL). File diunggah ke datastore default dan tersedia di project Anda.

    {"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?"}]}

Menggunakan wizard model penyesuaian halus

Portal Foundry menyediakan wizard model khusus untuk secara interaktif membuat dan melatih model yang disesuaikan untuk sumber daya Azure Anda.

Pilih model dasar

  1. Pilih Penyempurnaan dari menu bilah samping, lalu pilih + Sesuaikan model.
  2. Pilih model yang ingin Anda sesuaikan dari daftar di bawah Model dasar, lalu pilih Berikutnya.

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.

Pilih + Tambahkan data pelatihan.

  • Jika data pelatihan Anda sudah diunggah ke layanan, pilih File yang sudah ada di sumber daya ini.
    • Pilih file dari daftar dropdown yang diperlihatkan.
  • Untuk mengunggah data pelatihan baru, gunakan salah satu opsi berikut:
    • Pilih Unggah file untuk mengunggah data pelatihan dari file lokal.
    • Pilih Azure blob atau lokasi web bersama lainnya untuk mengimpor data pelatihan dari blob Azure atau lokasi web bersama lainnya.
  • Untuk menggunakan himpunan data yang siap digunakan untuk penyesuaian cepat, pilih dari daftar di bawah Pilih data.

Untuk file data besar, kami sarankan Anda mengimpor dari penyimpanan Blob Azure. Untuk informasi selengkapnya tentang Azure Blob Storage, lihat Apa yang Azure Blob Storage?

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, pilih Kirim untuk melanjutkan ke opsi tingkat lanjut untuk model. Jika tidak, jika Anda memiliki himpunan data validasi, pilih data validasi yang disiapkan yang ada atau unggah data validasi baru yang disiapkan untuk digunakan saat menyesuaikan model Anda.

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

  • Jika data validasi Anda sudah diunggah ke layanan, pilih File yang sudah ada di sumber daya ini.
    • Pilih file dari daftar yang diperlihatkan di panel Data validasi.
  • Untuk mengunggah data validasi baru, gunakan salah satu opsi berikut:
    • Pilih Unggah file untuk mengunggah data validasi dari file lokal.
    • Pilih Azure blob atau lokasi web bersama lainnya untuk mengimpor data validasi dari blob Azure atau lokasi web bersama lainnya.

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

Nota

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

Konfigurasikan parameter tugas

Wizard Penyetelan model menampilkan parameter untuk melatih model yang ditingkatkan pada papan Parameter tugas. Parameter berikut ini diperlukan:

Nama Jenis Deskripsi
Ukuran batch (1-32) bilangan bulat Ukuran batch yang akan digunakan untuk pelatihan. Ukuran batch adalah jumlah contoh pelatihan yang digunakan untuk melatih satu pass maju dan mundur. Secara umum, ukuran batch yang lebih besar cenderung bekerja lebih baik untuk himpunan data yang lebih besar. Nilai default dan nilai maksimum untuk properti ini khusus untuk model dasar. Ukuran batch yang lebih besar berarti parameter model diperbarui lebih jarang, tetapi dengan varian yang lebih rendah.
Pengali tingkat pembelajaran (0,0-10,0) nomor/angka Pengali laju pembelajaran yang digunakan untuk pelatihan. Tingkat pembelajaran untuk penyempurnaan adalah tingkat pembelajaran asli yang digunakan untuk pelatihan awal 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.
Jumlah epoch (1-10) bilangan bulat Jumlah epoch yang diperlukan untuk melatih model. Epoch mengacu pada satu siklus penuh melalui himpunan data pelatihan.

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

Setelah Anda mengonfigurasi opsi tingkat lanjut, pilih Kirim.

Periksa status model kustom Anda

Tab Penyempurnaan menampilkan informasi tentang model kustom Anda. Tab ini menyertakan informasi tentang status dan ID pekerjaan dari pekerjaan yang disesuaikan 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.

Screenshot dasbor proyek yang sedang berjalan.

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 dapat dilakukan pada tab Models:

  • 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 Refresh untuk memperbarui informasi di halaman.

Cuplikan layar dasbor detail penyempurnaan.

Skenario perusahaan yang didukung untuk penyempurnaan

Beberapa skenario perusahaan didukung untuk penyempurnaan penyebaran API tanpa server. Tabel berikut menguraikan konfigurasi yang didukung untuk jaringan dan autentikasi storage pengguna untuk memastikan operasi yang lancar dalam skenario perusahaan:

Nota

  • Autentikasi koneksi data dapat diubah melalui Foundry dengan memilih koneksi datastore tempat himpunan data Anda disimpan, dan menavigasi ke detail Access>Pengaturan Autentikasi.
  • Autentikasi penyimpanan dapat diubah dalam Azure Storage >Settings>Konfigurasi halaman >Perbolehkan akses kunci akun penyimpanan.
  • Jaringan penyimpanan dapat diubah di halaman Azure Storage >Networking.
jaringan penyimpanan Otorisasi Penyimpanan Autentikasi koneksi data Dukungan
Akses jaringan publik = Diaktifkan Kunci akun diaktifkan Kunci SAS/Akun Ya, UX dan SDK
Akses jaringan publik = Diaktifkan Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK

Note: untuk UX, Anda mungkin perlu menambahkan Storage Blob Data Reader atau Storage Blob Data Contributor untuk ID pengguna Anda di akun storage, atau mengubah autentikasi koneksi untuk menggunakan kunci Akun/token SAS
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun diaktifkan Kunci akun Ya, UX dan SDK

Catatan: untuk UX, IP komputasi yang menjalankan browser harus ada di daftar yang dipilih
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun diaktifkan SAS Ya, UX dan SDK

Catatan: untuk UX, IP komputasi yang menjalankan browser harus ada di daftar yang dipilih
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK.

Note: untuk UX, Anda mungkin perlu menambahkan Storage Blob Data Reader atau Storage Blob Data Contributor untuk ID pengguna Anda di akun storage, atau mengubah autentikasi koneksi untuk menggunakan kunci akun/token SAS. Pastikan juga IP komputasi yang menjalankan browser harus berada dalam daftar yang dipilih
Akses jaringan publik = Dinonaktifkan Kunci akun diaktifkan Kunci SAS/Akun Ya, UX dan SDK.

Note: agar pengunggahan dan pengiriman data UX berfungsi, ruang kerja harus diakses dari dalam virtual network yang memiliki access yang sesuai ke storage
Akses jaringan publik = Dinonaktifkan Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK.

Note: agar pengunggahan dan pengiriman data UX berfungsi, ruang kerja harus diakses dari dalam virtual network yang memiliki access yang sesuai ke storage

Skenario sebelumnya juga harus berfungsi di ruang kerja virtual network terkelola. Untuk mempelajari cara menyiapkan jaringan virtual terkelola hub Foundry, lihat Cara mengonfigurasi jaringan terkelola untuk hub Foundry.

Menggunakan kunci yang dikelola pelanggan (CMK) bukanlah skenario tingkat perusahaan yang didukung dengan optimasi penyebaran API tanpa server.

Masalah penyempurnaan dengan pengaturan jaringan yang unik di ruang kerja dan storage cenderung mengarah ke masalah pengaturan jaringan.


Mengimplementasikan model yang telah disempurnakan

Setelah pekerjaan penyempurnaan berhasil, sebarkan model kustom dari tab Penyempurnaan . Anda harus menyebarkan model kustom agar tersedia untuk digunakan dengan panggilan penyelesaian.

Penting

Setelah Anda menyebarkan model yang disesuaikan dan selesai dengan titik akhir, ingatlah untuk membersihkan titik akhir yang tidak aktif. 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 Foundry, setiap model yang disesuaikan (ditingkatkan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah ada pemrosesan atau panggilan penyelesaian obrolan ke model tersebut.

Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Foundry, lihat panduan dalam Merencanakan dan mengelola biaya untuk Foundry Service.

Nota

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.

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

Anda juga dapat menyebarkan model yang disempurnakan melalui tab Model + titik akhir dengan memilih tombol Sebarkan model lalu memilih Sebarkan Model yang disempurnakan dari menu dropdown

Cuplikan layar dasbor penyempurnaan kelola penyebaran.

Selanjutnya, pilih model yang disempurnakan yang ingin Anda sebarkan dan pilih Sebarkan.

Penyebaran lintas wilayah

Penyelarasan mendukung penerapan model yang sudah diselaraskan ke wilayah yang berbeda dari tempat model awalnya diselaraskan. Anda juga dapat menyebarkan ke langganan atau wilayah yang berbeda.

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

Penyebaran lintas langganan atau wilayah dapat dilakukan melalui Python.

Menggunakan model kustom yang disebarkan

Setelah model kustom Anda disebarkan, Anda dapat menggunakannya seperti model lain yang disebarkan. Anda dapat menggunakan Playgrounds di portal Foundry untuk bereksperimen dengan penyebaran baru Anda. Anda dapat terus menggunakan parameter yang sama dengan model kustom Anda, seperti suhu dan max_tokens, seperti yang dapat Anda lakukan pada model-model lain yang sudah diimplementasikan.

Membersihkan model yang disempurnakan

Anda dapat menghapus model yang disempurnakan dari daftar model penyempurnaan di Foundry atau dari halaman detail model. Untuk menghapus model yang diatur ulang dari halaman Penyempurnaan,

  1. Pilih Penyetelan Halus dari menu bilah samping di proyek Foundry Anda.
  2. Pilih tombol Hapus untuk menghapus model yang disempurnakan.

Nota

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

Membuat klien untuk menggunakan model

Bagian berikut memandu Anda melalui cara menyempurnakan model dalam python. Untuk menemukan contoh buku catatan kode ini, lihat penyetelan LLM dengan model sebagai layanan.

  1. Instal dependensi untuk mulai menyempurnakan model Anda.
%pip install azure-ai-ml
%pip install azure-identity

%pip install mlflow
%pip install azureml-mlflow
  1. Buat klien untuk menggunakan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan. Ganti <SUBSCRIPTION_ID>, <RESOURCE_GROUP_NAME>, dan <WORKSPACE_NAME> dengan nilai Anda sendiri.
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()

try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP_NAME>",
        workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
    )

# The models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")

# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id

Temukan model dengan dukungan penyesuaian

Katalog model Foundry menawarkan dukungan penyempurnaan untuk beberapa jenis model, termasuk penyelesaian obrolan dan pembuatan teks. Untuk daftar model dan wilayah yang mendukung penyempurnaan, lihat Ketersediaan wilayah untuk model di API tanpa server.

Tugas penyempurnaan hanya tersedia bagi pengguna dengan langganan Azure yang terdaftar pada akun penagihan di wilayah di mana penyedia model tersebut membuat penawaran tersedia. Jika penawaran tersedia di wilayah yang relevan, pengguna harus memiliki sumber daya proyek di wilayah Azure tempat model tersedia untuk penyebaran atau penyempurnaan, sebagaimana berlaku.

Contoh ini menggunakan model phi-4-mini-instruct . Dalam cuplikan kode ini, properti ID model diteruskan sebagai input ke pekerjaan pengoptimalan. Ini juga tersedia sebagai bidang ID Aset di halaman detail model di katalog model Foundry.

model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
    "\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
        model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
    )
)

Menyiapkan data untuk penyempurnaan

Siapkan data pelatihan dan validasi Anda untuk menyesuaikan model Anda. Data pelatihan dan validasi Anda terdiri dari contoh input dan output tentang performa model yang Anda inginkan.

Pastikan semua contoh pelatihan Anda mengikuti format yang diharapkan untuk inferensi. Untuk menyempurnakan model secara efektif, pastikan himpunan data yang beragam dengan mempertahankan keseimbangan data, termasuk berbagai skenario, dan menyempurnakan data pelatihan secara berkala agar selaras dengan harapan dunia nyata. Tindakan ini pada akhirnya menyebabkan respons model yang lebih akurat dan seimbang.

Petunjuk / Saran

Jenis model yang berbeda memerlukan format data pelatihan yang berbeda.

Contoh format file

Jenis file yang didukung adalah JSON Lines (JSONL). File diunggah ke datastore default dan tersedia di project Anda.

    {"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?"}]}

Membuat input data pelatihan

Cuplikan kode ini menunjukkan kepada Anda cara menentukan himpunan data pelatihan.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data

dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
    train_data_asset = workspace_ml_client.data.get(
        train_dataset_name, version=dataset_version
    )
    print(f"Dataset {train_dataset_name} already exists")
except:
    print("creating dataset")
    train_data = Data(
        path=f"./train.jsonl",
        type=AssetTypes.URI_FILE,
        description="Training dataset",
        name=train_dataset_name,
        version="1",
    )
    train_data_asset = workspace_ml_client.data.create_or_update(train_data)

Membuat data validasi

Langkah berikutnya menyediakan opsi untuk mengonfigurasi model untuk menggunakan data validasi dalam proses pelatihan. Jika Anda tidak ingin menggunakan data validasi, Anda dapat melewati langkah ini dan melanjutkan ke bagian berikutnya. 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.

from azure.ai.ml.entities import Data

dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
    validation_data_asset = workspace_ml_client.data.get(
        validation_dataset_name, version=dataset_version
    )
    print(f"Dataset {validation_dataset_name} already exists")
except:
    print("creating dataset")
    validation_data = Data(
        path=f"./validation.jsonl",
        type=AssetTypes.URI_FILE,
        description="Validation dataset",
        name=validation_dataset_name,
        version="1",
    )
    validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)

Membuat langganan marketplace untuk model mitra

Langkah ini diperlukan untuk semua model yang tidak Microsoft. Contoh model Microsoft adalah keluarga model Phi.

model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)

normalized_model_name = model_name.replace(".", "-")

from azure.ai.ml.entities import MarketplaceSubscription

subscription_name = f"{normalized_model_name}-sub"

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id_to_subscribe,
    name=subscription_name,
)

# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
    marketplace_subscription = (
        workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
            marketplace_subscription
        ).result()
    )
except Exception as ex:
    print(ex)

Kirim pekerjaan penyempurnaan menggunakan model dan data sebagai input

Set parameter berikut diperlukan untuk menyempurnakan model Anda.

  • model: Model dasar untuk menyempurnakan
  • training_data: Data pelatihan untuk menyempurnakan model dasar
  • validation_data: Data validasi untuk menyempurnakan model dasar
  • task: Tugas penyempurnaan yang harus dilakukan, misalnya, CHAT_COMPLETION untuk pekerjaan penyesuaian obrolan
  • outputs: Nama model output yang terdaftar

Parameter berikut bersifat opsional:

  • hyperparameters: Parameter yang mengontrol perilaku penyempurnaan pada waktu proses
  • name: Nama tugas penyelarasan
  • experiment_name: Nama eksperimen untuk tugas penyetelan
  • display_name: Nama tampilan pekerjaan penyempurnaan
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid

guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"

finetuning_job = create_finetuning_job(
    task=FineTuningTaskType.CHAT_COMPLETION,
    training_data=train_data_asset.id,
    validation_data=validation_data_asset.id,
    hyperparameters={
        "per_device_train_batch_size": "1",
        "learning_rate": "0.00002",
        "num_train_epochs": "1",
    },
    model=model_to_finetune.id,
    display_name=display_name,
    name=name,
    experiment_name=experiment_name,
    tags={"foo_tag": "bar"},
    properties={"my_property": "my_value"},
    output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)

status = workspace_ml_client.jobs.get(created_job.name).status

import time

while True:
    status = workspace_ml_client.jobs.get(created_job.name).status
    print(f"Current job status: {status}")
    if status in ["Failed", "Completed", "Canceled"]:
        print("Job has finished with status: {0}".format(status))
        break
    else:
        print("Job is still running. Checking again in 30 seconds.")
        time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name

Mengimplementasikan model yang telah disempurnakan

Setelah pekerjaan penyempurnaan berhasil, Anda dapat menyebarkan model kustom.

Penting

Setelah Anda menyebarkan model yang disesuaikan dan selesai dengan titik akhir, ingatlah untuk membersihkan titik akhir yang tidak aktif. 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 Foundry, setiap model yang disesuaikan (ditingkatkan) yang disebarkan menimbulkan biaya hosting per jam terlepas dari apakah ada pemrosesan atau panggilan penyelesaian obrolan ke model tersebut.

Untuk mempelajari selengkapnya tentang merencanakan dan mengelola biaya dengan Foundry, lihat panduan dalam Merencanakan dan mengelola biaya untuk hub Foundry.

# Deploy the model as a serverless endpoint

endpoint_name = f"{normalized_model_name}-ft-{short_guid}"  # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"

Skenario perusahaan yang didukung untuk penyempurnaan

Beberapa skenario perusahaan didukung untuk penyempurnaan penyebaran API tanpa server. Tabel berikut menguraikan konfigurasi yang didukung untuk jaringan dan autentikasi storage pengguna untuk memastikan operasi yang lancar dalam skenario perusahaan:

Nota

  • Autentikasi koneksi data dapat diubah melalui Foundry dengan memilih koneksi datastore tempat himpunan data Anda disimpan, dan menavigasi ke detail Access>Pengaturan Autentikasi.
  • Autentikasi penyimpanan dapat diubah dalam Azure Storage >Settings>Konfigurasi halaman >Perbolehkan akses kunci akun penyimpanan.
  • Jaringan penyimpanan dapat diubah di halaman Azure Storage >Networking.
jaringan penyimpanan Otorisasi Penyimpanan Autentikasi koneksi data Dukungan
Akses jaringan publik = Diaktifkan Kunci akun diaktifkan Kunci SAS/Akun Ya, UX dan SDK
Akses jaringan publik = Diaktifkan Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK

Note: untuk UX, Anda mungkin perlu menambahkan Storage Blob Data Reader atau Storage Blob Data Contributor untuk ID pengguna Anda di akun storage, atau mengubah autentikasi koneksi untuk menggunakan kunci Akun/token SAS
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun diaktifkan Kunci akun Ya, UX dan SDK

Catatan: untuk UX, IP komputasi yang menjalankan browser harus ada di daftar yang dipilih
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun diaktifkan SAS Ya, UX dan SDK

Catatan: untuk UX, IP komputasi yang menjalankan browser harus ada di daftar yang dipilih
Diaktifkan dari jaringan virtual dan alamat IP yang dipilih Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK.

Note: untuk UX, Anda mungkin perlu menambahkan Storage Blob Data Reader atau Storage Blob Data Contributor untuk ID pengguna Anda di akun storage, atau mengubah autentikasi koneksi untuk menggunakan kunci Akun/token SAS. Pastikan juga IP komputasi yang menjalankan browser harus berada dalam daftar yang dipilih
Akses jaringan publik = Dinonaktifkan Kunci akun diaktifkan Kunci SAS/Akun Ya, UX dan SDK.

Note: agar pengunggahan dan pengiriman data UX berfungsi, ruang kerja harus diakses dari dalam virtual network yang memiliki access yang sesuai ke storage
Akses jaringan publik = Dinonaktifkan Kunci akun dinonaktifkan Autentikasi berbasis Entra (tanpa kredensial) Ya, UX dan SDK.

Note: agar pengunggahan dan pengiriman data UX berfungsi, ruang kerja harus diakses dari dalam virtual network yang memiliki access yang sesuai ke storage

Skenario sebelumnya juga harus berfungsi di ruang kerja virtual network terkelola. Untuk mempelajari cara menyiapkan jaringan virtual terkelola Foundry hub, lihat Cara menyiapkan jaringan terkelola untuk hub Foundry.

Menggunakan kunci yang dikelola pelanggan (CMK) bukanlah skenario tingkat perusahaan yang didukung dengan optimasi penyebaran API tanpa server.

Masalah penyempurnaan dengan pengaturan jaringan yang unik di ruang kerja dan storage cenderung mengarah ke masalah pengaturan jaringan.

Penyebaran lintas wilayah

Pengaturan ulang mendukung penerapan model yang telah disetelan ke wilayah yang berbeda dari tempat model tersebut awalnya disetel. Anda juga dapat menyebarkan ke langganan atau wilayah yang berbeda.

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

Penyebaran lintas langganan atau wilayah dapat dilakukan melalui Python.


# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()
try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<TARGET_SUBSCRIPTION_ID>",
        resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
        workspace_name="<TARGET_PROJECT_NAME>",
    )

workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
    print(f"Creating endpoint in the region:{workspace_region}")
    serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
    created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
        serverless_endpoint
    ).result()
else:
    raise ValueError(
        f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
    )

Menggunakan model kustom yang disebarkan

Setelah model kustom Anda disebarkan, Anda dapat menggunakannya seperti model lain yang disebarkan. Anda dapat terus menggunakan parameter yang sama dengan model kustom Anda, seperti temperature dan max_tokens, sebagaimana yang dapat Anda lakukan dengan model lain yang disebarkan.

endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key

import requests

url = f"{endpoint.scoring_uri}/v1/chat/completions"

payload = {
    "max_tokens": 1024,
    "messages": [
        {
            "content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
            "role": "user",
        }
    ],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}

response = requests.post(url, json=payload, headers=headers)

response.json()

Membersihkan model yang disempurnakan

Setelah Anda selesai dengan model Anda, jalankan kode berikut untuk membersihkan model yang disempurnakan.

workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()

Pertimbangan biaya dan kuota untuk model yang disebarkan sebagai penyebaran API tanpa server

Kuota dikelola per penyebaran. Setiap penyebaran memiliki batas tarif 200.000 token per menit dan 1.000 permintaan API per menit. Namun, saat ini kami membatasi satu penyebaran per model per proyek. Hubungi Dukungan Microsoft Azure jika batas tarif saat ini tidak cukup untuk skenario Anda.

Biaya untuk model Microsoft

Anda dapat menemukan informasi harga pada tab Harga dan ketentuan wizard penyebaran ketika menyebarkan model Microsoft (seperti model Phi-3) sebagai penyebaran API serverless.

Biaya untuk model non-Microsoft

Model non-Microsoft yang disebarkan sebagai penyebaran API tanpa server ditawarkan melalui Marketplace Azure dan terintegrasi dengan Foundry untuk digunakan. Anda dapat menemukan harga Marketplace Azure saat menyebarkan atau menyempurnakan model ini.

Setiap kali proyek berlangganan penawaran tertentu dari Marketplace Azure, sumber daya baru dibuat untuk melacak biaya yang terkait dengan konsumsinya. Sumber daya yang sama digunakan untuk melacak biaya yang terkait dengan inferensi dan penyempurnaan model; namun, beberapa alat ukur tersedia untuk melacak setiap skenario secara independen.

Untuk informasi selengkapnya tentang cara melacak biaya, lihat Memantau biaya untuk model yang ditawarkan melalui Marketplace Azure.

Cuplikan layar memperlihatkan sumber daya yang berbeda yang sesuai dengan penawaran model yang berbeda dan meter terkaitnya.

Notebook contoh

Anda dapat menggunakan notebook sample ini untuk membuat pekerjaan penyempurnaan mandiri untuk meningkatkan kemampuan model untuk meringkas dialog antara dua orang menggunakan himpunan data Samsum.

Data pelatihan adalah himpunan data ultrachat_200k, yang dibagi menjadi empat bagian yang cocok untuk penyempurnaan terarah (sft) dan pemeringkatan hasil produksi (gen). Notebook menggunakan model AI Azure yang tersedia untuk tugas penyelesaian obrolan (Jika Anda ingin menggunakan model yang berbeda dari yang digunakan dalam buku catatan, Anda dapat mengganti nama model).

Notebook mencakup penyiapan prasyarat, memilih model untuk penyesuaian, membuat himpunan data pelatihan dan validasi, mengonfigurasi dan mengirimkan pekerjaan penyesuaian, dan akhirnya, membuat penerapan berbasis serverless menggunakan model yang telah disesuaikan untuk melakukan inferensi pada data sampel.

Sampel CLI

Selain itu, Anda dapat menggunakan sample CLI ini untuk membuat pekerjaan penyempurnaan mandiri untuk meningkatkan kemampuan model untuk meringkas dialog antara dua orang menggunakan himpunan data.

type: finetuning

name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model: 
  path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
  type: mlflow_model
training_data: train.jsonl
validation_data:
  path: validation.jsonl
  type: uri_file
hyperparameters:
  num_train_epochs: "1"
  per_device_train_batch_size: "1"
  learning_rate: "0.00002"
properties:
  my_property: "my_value"
tags:
  foo_tag: "bar"
outputs:
  registered_model:
    name: "Phi-3-mini-4k-instruct-finetuned-model"
    type: mlflow_model 

Data pelatihan yang digunakan sama seperti yang ditunjukkan dalam buku catatan SDK. CLI menggunakan model AI Azure yang tersedia untuk tugas penyelesaian obrolan. Jika Anda lebih suka menggunakan model yang berbeda dari model dalam sampel CLI, Anda dapat memperbarui argumen, seperti model path, sesuai.

Pemfilteran konten

Model penyebaran API tanpa server dilindungi oleh Keamanan Konten Azure AI. Saat disebarkan ke titik akhir real-time, Anda dapat menonaktifkan kemampuan ini.

Dengan Keamanan Konten Azure AI diaktifkan, perintah dan penyelesaian melewati ansambel model klasifikasi yang bertujuan mendeteksi dan mencegah output konten berbahaya. Sistem pemfilteran konten mendeteksi dan mengambil tindakan pada kategori tertentu dari konten yang berpotensi berbahaya dalam perintah input dan penyelesaian output.

Untuk mempelajari selengkapnya tentang Keamanan Konten Azure AI, lihat pemfilteran Content di portal Foundry.