Bagikan melalui


Menyebarkan model dari hub HuggingFace ke titik akhir online Azure Machine Learning untuk inferensi real time

Microsoft telah bermitra dengan Hugging Face untuk menghadirkan model sumber terbuka dari Hugging Face Hub ke Azure Machine Learning. Hugging Face adalah pembuat Transformers, pustaka yang sangat populer untuk membangun model bahasa besar. Hub model Hugging Face yang memiliki ribuan model sumber terbuka. Integrasi dengan Azure Pembelajaran Mesin memungkinkan Anda menyebarkan model sumber terbuka pilihan Anda untuk mengamankan dan menskalakan infrastruktur inferensi di Azure. Anda dapat mencari dari ribuan model transformator di katalog model Azure Pembelajaran Mesin dan menyebarkan model ke titik akhir online terkelola dengan mudah melalui wizard terpandu. Setelah disebarkan, titik akhir online terkelola memberi Anda REST API aman untuk menilai model Anda secara real time.

Catatan

Model dari Hugging Face tunduk pada persyaratan lisensi pihak ketiga yang tersedia di halaman detail model Wajah Pelukan. Anda bertanggung jawab untuk mematuhi persyaratan lisensi model.

Manfaat menggunakan titik akhir online untuk inferensi real time

Titik akhir online terkelola di Azure Pembelajaran Mesin membantu Anda menyebarkan model ke mesin CPU dan GPU yang kuat di Azure dengan cara turnkey. Titik akhir online yang dikelola menangani penyajian, penskalaan, pengamanan, dan pemantauan model Anda, membebaskan Anda dari overhead pengaturan dan pengelolaan infrastruktur yang mendasarinya. Komputer virtual disediakan atas nama Anda saat Anda menyebarkan model. Anda dapat memiliki beberapa penyebaran di belakang dan membagi lalu lintas atau mencerminkan lalu lintas ke penyebaran tersebut. Lalu lintas cermin membantu Anda menguji versi model baru pada lalu lintas produksi tanpa merilisnya lingkungan produksi. Memisahkan lalu lintas memungkinkan Anda meningkatkan lalu lintas produksi secara bertahap ke versi model baru sambil mengamati performa. Skala otomatis memungkinkan Anda meningkatkan atau menurunkan sumber daya secara dinamis berdasarkan beban kerja. Anda dapat mengonfigurasi penskalaan berdasarkan metrik pemanfaatan, jadwal tertentu, atau kombinasi keduanya. Contoh penskalaan berdasarkan metrik pemanfaatan adalah menambahkan simpul jika pemanfaatan CPU lebih tinggi dari 70%. Contoh penskalaan berbasis jadwal adalah menambahkan simpul berdasarkan jam kerja puncak.

Menyebarkan model hub HuggingFace menggunakan Studio

Untuk menemukan model yang akan disebarkan, buka katalog model di studio Azure Pembelajaran Mesin. Pilih 'Semua Filter', lalu pilih 'HuggingFace' di bagian Filter menurut koleksi. Pilih petak peta model untuk membuka halaman model.

Menyebarkan model

Pilih opsi penyebaran real time untuk membuka dialog penyebaran cepat. Tentukan opsi berikut:

  • Pilih templat untuk GPU atau CPU. Jenis instans CPU baik untuk pengujian dan jenis instans GPU menawarkan performa yang lebih baik dalam produksi. Model yang besar tidak cocok dalam jenis instans CPU.
  • Pilih jenis instans. Daftar instans ini difilter ke instans yang diharapkan untuk disebarkan model tanpa kehabisan memori.
  • Pilih jumlah instans. Satu instans cukup untuk pengujian tetapi sebaiknya pertimbangkan dua instans atau lebih untuk produksi.
  • Secara opsional tentukan titik akhir dan nama penyebaran.
  • Pilih sebarkan. Anda kemudian dinavigasi ke halaman titik akhir yang mungkin memakan waktu beberapa detik. Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan berdasarkan ukuran model dan jenis instans.

Catatan: Jika Anda ingin menyebarkan ke titik akhir yang sudah ada, pilih More options dari dialog penyebaran cepat dan gunakan wizard penyebaran lengkap.

Menguji model yang disebarkan

Setelah penyebaran selesai, Anda dapat menemukan titik akhir REST untuk model di halaman titik akhir, yang dapat digunakan untuk menilai model. Anda menemukan opsi untuk menambahkan lebih banyak penyebaran, mengelola lalu lintas, dan menskalakan hub Titik Akhir. Anda juga menggunakan tab Uji di halaman titik akhir untuk menguji model dengan input sampel. Input sampel tersedia di halaman model. Anda dapat menemukan format input, parameter, dan input sampel pada dokumentasi HUGGING Face Hub inference API.

Menyebarkan model hub HuggingFace menggunakan Python SDK

Siapkan Python SDK.

Temukan model yang akan disebarkan

Telusuri katalog model di studio Azure Pembelajaran Mesin dan temukan model yang ingin Anda sebarkan. Salin nama model yang ingin Anda sebarkan. Impor pustaka yang diperlukan. Model yang ditampilkan dalam katalog tercantum dari HuggingFace registri. model_id Buat menggunakan nama model yang Anda salin dari katalog model dan HuggingFace registri. Anda menyebarkan bert_base_uncased model dengan versi terbaru dalam contoh ini.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    CodeConfiguration,
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Menyebarkan model

Membuat titik akhir online. Selanjutnya, buat penyebaran. Terakhir, atur semua lalu lintas untuk menggunakan penyebaran ini. Anda dapat menemukan CPU atau GPU instance_type optimal untuk model dengan membuka dialog penyebaran cepat dari halaman model di katalog model. Pastikan Anda menggunakan kuota instance_type yang anda miliki.

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint = ml_client.online_endpoints.get(endpoint_name)
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint).result()

Menguji model yang disebarkan

Buat file dengan input yang dapat dikirimkan ke titik akhir online untuk penilaian. Input sampel kode di bawah ini untuk jenis karena fill-mask kami menyebarkan bert-base-uncased model. Anda dapat menemukan format input, parameter, dan input sampel pada dokumentasi HUGGING Face Hub inference API.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Menyebarkan model hub HuggingFace menggunakan CLI

Siapkan CLI.

Temukan model yang akan disebarkan

Telusuri katalog model di studio Azure Pembelajaran Mesin dan temukan model yang ingin Anda sebarkan. Salin nama model yang ingin Anda sebarkan. Model yang ditampilkan dalam katalog tercantum dari HuggingFace registri. Anda menyebarkan bert_base_uncased model dengan versi terbaru dalam contoh ini.

Menyebarkan model

Anda memerlukan model dan instance_type untuk menyebarkan model. Anda dapat menemukan CPU atau GPU instance_type optimal untuk model dengan membuka dialog penyebaran cepat dari halaman model di katalog model. Pastikan Anda menggunakan kuota instance_type yang anda miliki.

Model yang ditampilkan dalam katalog tercantum dari HuggingFace registri. Anda menyebarkan bert_base_uncased model dengan versi terbaru dalam contoh ini. Id aset yang model sepenuhnya memenuhi syarat berdasarkan nama model dan registri adalah azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Kami membuat file yang deploy.yml digunakan untuk perintah sebaris az ml online-deployment create .

Membuat titik akhir online. Selanjutnya, buat penyebaran.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

Menguji model yang disebarkan

Buat file dengan input yang dapat dikirimkan ke titik akhir online untuk penilaian. Memeluk Face sebagai input sampel kode untuk fill-mask jenis model yang bert-base-uncased disebarkan model. Anda dapat menemukan format input, parameter, dan input sampel pada dokumentasi HUGGING Face Hub inference API.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

Memeluk kode contoh Model Wajah

Ikuti tautan ini untuk menemukan kode contoh model wajah yang memeluk untuk berbagai skenario termasuk klasifikasi token, terjemahan, jawaban atas pertanyaan, dan klasifikasi bidikan nol.

Pemecahan masalah: Kesalahan penyebaran dan model yang tidak didukung

Hub HuggingFace memiliki ribuan model, dengan ratusan model yang diperbarui setiap hari. Hanya model paling populer dalam koleksi yang diuji dan yang lain mungkin gagal dengan salah satu kesalahan di bawah ini.

Model yang dijaga

Model terjaga mengharuskan pengguna untuk setuju untuk berbagi informasi kontak mereka dan menerima syarat dan ketentuan pemilik model untuk mengakses model. Mencoba menyebarkan model tersebut akan gagal dengan KeyError.

Model yang perlu menjalankan kode jarak jauh

Model biasanya menggunakan kode dari transformator SDK tetapi beberapa model menjalankan kode dari repositori model. Model tersebut perlu mengatur parameter trust_remote_code ke True. Ikuti tautan ini untuk mempelajari selengkapnya tentang menggunakan kode jarak jauh. Model tersebut tidak didukung untuk mengingat keamanan. Mencoba menyebarkan model tersebut akan gagal dengan kesalahan berikut: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Model dengan tokenizer yang salah

Tokenizer yang salah ditentukan atau hilang dalam paket model dapat mengakibatkan OSError: Can't load tokenizer for <model> kesalahan.

Pustaka yang hilang

Beberapa model memerlukan pustaka python tambahan. Anda dapat menginstal pustaka yang hilang saat menjalankan model secara lokal. Model yang membutuhkan pustaka khusus di luar pustaka transformator standar akan gagal dengan ModuleNotFoundError atau ImportError kesalahan.

Memori tidak mencukup

Jika Anda melihat OutOfQuota: Container terminated due to insufficient memory, coba gunakan dengan lebih banyak instance_type memori.

Tanya jawab umum

Di mana lokasi penyimpanan bobot model?

Model Wajah Pelukan ditampilkan dalam katalog model Azure Pembelajaran Mesin melalui HuggingFace registri. Memeluk Wajah membuat dan mengelola registri ini dan tersedia untuk Azure Pembelajaran Mesin sebagai Community Registry. Bobot model tidak dihosting di Azure. Bobot diunduh langsung dari Hugging Face hub ke titik akhir online di ruang kerja Anda saat model ini disebarkan. HuggingFaceregistri di AzureML berfungsi sebagai katalog untuk membantu menemukan dan menyebarkan model hub HuggingFace di Azure Pembelajaran Mesin.

Bagaimana cara menyebarkan model untuk inferensi batch? Menyebarkan model ini ke titik akhir batch untuk inferensi batch saat ini tidak didukung.

Dapatkah saya menggunakan model dari HuggingFace registri sebagai input ke pekerjaan sehingga saya dapat menyempurnakan model ini menggunakan transformator SDK? Karena bobot model tidak disimpan di HuggingFace registri, Anda tidak dapat mengakses bobot model dengan menggunakan model ini sebagai input ke pekerjaan.

Bagaimana cara mendapatkan dukungan jika penyebaran saya gagal atau inferensi tidak berfungsi seperti yang diharapkan?HuggingFace adalah registri komunitas dan tidak tercakup oleh dukungan Microsoft. Tinjau log penyebaran dan cari tahu apakah masalah terkait dengan platform Azure Pembelajaran Mesin atau khusus untuk transformator HuggingFace. Hubungi dukungan Microsoft untuk masalah platform apa pun. Misalnya, tidak dapat membuat titik akhir atau autentikasi online ke REST API titik akhir tidak berfungsi. Untuk masalah spesifik transformator, gunakan forum HuggingFace atau dukungan HuggingFace.

Apa itu registri komunitas? Registri komunitas adalah registri Azure Pembelajaran Mesin yang dibuat oleh mitra azure Pembelajaran Mesin tepercaya dan tersedia untuk semua pengguna Azure Pembelajaran Mesin.

Di mana pengguna dapat mengirimkan pertanyaan dan masalah terkait Hugging Face di dalam Azure Machine Learning? Kirimkan pertanyaan Anda di forum diskusi Azure Pembelajaran Mesin.

Ketersediaan regional

Koleksi Wajah Pelukan saat ini hanya tersedia di semua wilayah cloud publik.