Aracılığıyla paylaş


Gerçek zamanlı çıkarım için Hugging Face hub'dan Azure Machine Learning çevrimiçi uç noktalarına modelleri dağıtma

Microsoft, Hugging Face'ten Azure Machine Learning'e açık kaynak modelleri getirmek için Hugging Face ile işbirliği yaptı. Hugging Face, büyük dil modelleri oluşturmaya yönelik popüler bir kütüphane olan Transformers'ın yaratıcısı. Binlerce açık kaynak modeli içeren Hugging Face model hub. Azure Machine Learning ile tümleştirme, Azure'da güvenli ve ölçeklenebilir çıkarım altyapısı için tercih ettiğiniz açık kaynak modelleri dağıtmanıza olanak tanır. Kılavuzlu sihirbaz aracılığıyla Azure Machine Learning model kataloğunda binlerce transformatör modelinden arama yapabilir ve modelleri yönetilen çevrimiçi uç noktaya kolayca dağıtabilirsiniz. Dağıtıldıktan sonra yönetilen çevrimiçi uç nokta, modelinizi gerçek zamanlı olarak puanlayabileceğiniz güvenli REST API sağlar.

Not

YüzLeri Kucaklama'dan modeller, Yüz Tanıma modeli ayrıntıları sayfasında sağlanan üçüncü taraf lisans koşullarına tabidir. Modelin lisans koşullarına uymak sizin sorumluluğunuzdadır.

Gerçek zamanlı çıkarım için çevrimiçi uç noktaları kullanmanın avantajları

Azure Machine Learning'deki yönetilen çevrimiçi uç noktalar, modelleri Azure'daki güçlü CPU ve GPU makinelerine anahtar teslimi bir şekilde dağıtmanıza yardımcı olur. Yönetilen çevrimiçi uç noktalar modellerinizin sunulması, ölçeklendirilmesi, güvenlik altına alınması ve izlenmesiyle ilgilenerek, sizi temel altyapıyı ayarlama ve yönetme yükünden kurtarır. Sanal makineler, modelleri dağıttığınızda sizin yerinize sağlanır. Arkanızda birden çok dağıtım olabilir ve trafiği bölebilir veya trafiği bu dağıtımlara yansıtabilirsiniz. Yansıtma trafiği, üretim ortamlarını yayınlamadan yeni model sürümlerini üretim trafiğinde test etmeye yardımcı olur. Trafiği bölmek, performansı gözlemlerken üretim trafiğini yeni model sürümlerine kademeli olarak artırmanıza olanak tanır. Otomatik ölçeklendirme , iş yüklerine göre kaynakları dinamik olarak artırmanıza veya azaltmanıza olanak tanır. Ölçeklendirmeyi kullanım ölçümlerine, belirli bir zamanlamaya veya her ikisinin birleşimine göre yapılandırabilirsiniz. Cpu kullanımı %70'in üzerine çıktığında, kullanım ölçümlerine göre ölçeklendirmeye örnek olarak düğümler ekleyebilirsiniz. Zamanlamaya dayalı ölçeklendirmeye örnek olarak yoğun iş saatlerini temel alan düğümler ekleyebilirsiniz.

Studio kullanarak HuggingFace hub modellerini dağıtma

Dağıtılacak modeli bulmak için model kataloğunu Azure Machine Learning stüdyosu açın. Koleksiyonlara göre filtrele bölümünde 'Tüm Filtreler'i ve ardından 'HuggingFace' öğesini seçin. Model sayfasını açmak için model kutucuğunu seçin.

Modeli dağıtma

Hızlı dağıtım iletişim kutusunu açmak için gerçek zamanlı dağıtım seçeneğini belirleyin. Aşağıdaki seçenekleri belirtin:

  • GPU veya CPU şablonunu seçin. CPU örneği türleri test için iyidir ve GPU örneği türleri üretimde daha iyi performans sunar. Büyük modeller bir CPU örneği türüne sığmaz.
  • Örnek türünü seçin. Bu örnek listesi, modelin bellek yetersiz kalmadan dağıtılması beklenen örneklere göre filtrelenir.
  • Örnek sayısını seçin. Bir örnek test için yeterlidir, ancak üretim için iki veya daha fazla örneği göz önünde bulundurmanızı öneririz.
  • İsteğe bağlı olarak bir uç nokta ve dağıtım adı belirtin.
  • Dağıt'ı seçin. Ardından uç nokta sayfasına gidersiniz ve bu işlem birkaç saniye sürebilir. Dağıtımın tamamlanması model boyutuna ve örnek türüne göre birkaç dakika sürer.

Not: Mevcut uç noktaya dağıtmak istiyorsanız, hızlı dağıtım iletişim kutusundan seçim yapın More options ve tam dağıtım sihirbazını kullanın.

Dağıtılan modeli test etme

Dağıtım tamamlandıktan sonra modelin REST uç noktasını uç noktalar sayfasında bulabilirsiniz. Bu uç nokta modeli puanlandırmak için kullanılabilir. Daha fazla dağıtım ekleme, trafiği yönetme ve Endpoints hub'ını ölçeklendirme seçeneklerini bulabilirsiniz. Modeli örnek girişlerle test etmek için uç nokta sayfasındaki Test sekmesini de kullanırsınız. Örnek girişler model sayfasında kullanılabilir. Giriş biçimini, parametreleri ve örnek girişleri Hugging Face hub çıkarım API'si belgelerinde bulabilirsiniz.

Python SDK'sı kullanarak Hugging Face hub modellerini dağıtma

Python SDK'sını ayarlayın.

Dağıtılacak modeli bulma

Azure Machine Learning stüdyosu'da model kataloğuna göz atın ve dağıtmak istediğiniz modeli bulun. Dağıtmak istediğiniz model adını kopyalayın. Gerekli kitaplıkları içeri aktarın. Katalogda gösterilen modeller kayıt defterinden HuggingFace listelenir. model_id Model kataloğundan ve HuggingFace kayıt defterinden kopyaladığınız model adını kullanarak oluşturun. Modeli bu örnekteki en son sürümle dağıtacaksınız bert_base_uncased .

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"

Modeli dağıtma

Çevrimiçi uç nokta oluşturma. Ardından dağıtımı oluşturun. Son olarak, tüm trafiği bu dağıtımı kullanacak şekilde ayarlayın. Model kataloğundaki model sayfasından hızlı dağıtım iletişim kutusunu açarak bir model için en uygun CPU veya GPU'ya instance_type ulaşabilirsiniz. Kotanız olan bir instance_type kullandığınızdan emin olun.

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()

Dağıtılan modeli test etme

Puanlama için çevrimiçi uç noktaya gönderilebilen girişlere sahip bir dosya oluşturun. Modeli dağıttıktan bert-base-uncased sonra türü için fill-mask aşağıdaki kod örneği girişi. Giriş biçimini, parametreleri ve örnek girişleri Hugging Face hub çıkarım API'si belgelerinde bulabilirsiniz.

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))

CLI kullanarak Hugging Face hub modellerini dağıtma

CLI'yi ayarlayın.

Dağıtılacak modeli bulma

Azure Machine Learning stüdyosu'da model kataloğuna göz atın ve dağıtmak istediğiniz modeli bulun. Dağıtmak istediğiniz model adını kopyalayın. Katalogda gösterilen modeller kayıt defterinden HuggingFace listelenir. Modeli bu örnekteki en son sürümle dağıtacaksınız bert_base_uncased .

Modeli dağıtma

Modeli dağıtmak için ve instance_type gerekirmodel. Model kataloğundaki model sayfasından hızlı dağıtım iletişim kutusunu açarak bir model için en uygun CPU veya GPU'ya instance_type ulaşabilirsiniz. Kotanız olan bir instance_type kullandığınızdan emin olun.

Katalogda gösterilen modeller kayıt defterinden HuggingFace listelenir. Modeli bu örnekteki en son sürümle dağıtacaksınız bert_base_uncased . Model adına ve kayıt defterine göre tam model varlık kimliği şeklindedir azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Komut için az ml online-deployment create kullanılan dosyayı satır içi olarak oluştururuzdeploy.yml.

Çevrimiçi uç nokta oluşturma. Ardından dağıtımı oluşturun.

# 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

Dağıtılan modeli test etme

Puanlama için çevrimiçi uç noktaya gönderilebilen girişlere sahip bir dosya oluşturun. Modeli dağıtılan modelimizin türü için fill-mask kod örneği girişi olarak Yüz Tanımayı Kucaklama bert-base-uncased . Giriş biçimini, parametreleri ve örnek girişleri Hugging Face hub çıkarım API'si belgelerinde bulabilirsiniz.

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

Yüz Modeli örnek kodunu kucaklama

Belirteç sınıflandırması, çeviri, soru yanıtlama ve sıfır çekim sınıflandırması gibi çeşitli senaryolara yönelik sarılan yüz modeli örnek kodunu bulmak için bu bağlantıyı izleyin.

Sorun giderme: Dağıtım hataları ve desteklenmeyen modeller

Hugging Face hub'ın, yüzlercesi her gün güncelleştirilen binlerce modeli vardır. Yalnızca koleksiyondaki en popüler modeller test edilir ve diğerleri aşağıdaki hatalardan biriyle başarısız olabilir.

Geçitli modeller

Geçitli modeller, kullanıcıların modele erişmek için iletişim bilgilerini paylaşmayı ve model sahiplerinin hüküm ve koşullarını kabul etmelerini gerektirir. Bu tür modelleri dağıtma girişimi bir KeyErrorile başarısız olur.

Uzak kodu çalıştırması gereken modeller

Modeller genellikle transformatörLER SDK'sından kod kullanır, ancak bazı modeller model deposundan kod çalıştırır. Bu tür modellerin parametresini trust_remote_code olarak Trueayarlaması gerekir. Uzak kodu kullanma hakkında daha fazla bilgi edinmek için bu bağlantıyı izleyin. Bu tür modellerin güvenliği göz önünde bulundurması desteklenmez. Bu tür modelleri dağıtma girişimi aşağıdaki hatayla başarısız olur: 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.

Yanlış belirteç oluşturucuları olan modeller

Model paketinde yanlış belirtilen veya eksik belirteç oluşturucu hataya OSError: Can't load tokenizer for <model> neden olabilir.

Eksik kitaplıklar

Bazı modellerde ek Python kitaplıkları gerekir. Modelleri yerel olarak çalıştırırken eksik kitaplıkları yükleyebilirsiniz. Standart transformatör kitaplıklarının ötesinde özel kitaplıklara ihtiyaç duyan modeller hatayla veya ImportError hatayla ModuleNotFoundError başarısız olur.

Yetersiz bellek

ifadesini görürseniz OutOfQuota: Container terminated due to insufficient memory, daha fazla bellekle kullanmayı instance_type deneyin.

Sık sorulan sorular

Model ağırlıkları nerede depolanır?

Yüz Tanıma modellerini kucaklama, kayıt defteri aracılığıyla Azure Machine Learning model kataloğunda HuggingFace yer alır. Yüz Tanıma özelliği bu kayıt defterini oluşturur ve yönetir ve Azure Machine Learning'in Topluluk Kayıt Defteri olarak kullanımına sunulur. Model ağırlıkları Azure'da barındırılamaz. Ağırlıklar, bu modeller dağıtıldığında doğrudan Yüz Tanıma hub'ından çalışma alanınızdaki çevrimiçi uç noktalara indirilir. HuggingFace AzureML'deki kayıt defteri, Azure Machine Learning'de HuggingFace hub modellerini keşfetmeye ve dağıtmaya yardımcı olan bir katalog olarak çalışır.

Toplu çıkarım için modeller nasıl dağıtılır? Bu modelleri toplu çıkarım için toplu iş uç noktalarına dağıtma şu anda desteklenmemektedir.

Transformatör SDK'sını HuggingFace kullanarak bu modelleri ince ayar edebilmem için kayıt defterindeki modelleri işlere giriş olarak kullanabilir miyim? Model ağırlıkları kayıt defterinde depolanmadığından HuggingFace , bu modelleri işlere giriş olarak kullanarak model ağırlıklarına erişemezsiniz.

Dağıtımlarım başarısız olursa veya çıkarım beklendiği gibi çalışmazsa Nasıl yaparım? destek alırsınız?HuggingFace bir topluluk kayıt defteridir ve Microsoft desteği kapsamında değildir. Dağıtım günlüklerini gözden geçirin ve sorunun Azure Machine Learning platformuyla mı yoksa HuggingFace transformatörleriyle mi ilgili olduğunu öğrenin. Platform sorunları için Microsoft desteğine başvurun. Örneğin, uç nokta REST API'sinde çevrimiçi uç nokta veya kimlik doğrulaması oluşturulamaması işe yaramaz. Transformatörlere özgü sorunlar için HuggingFace forumunu veya HuggingFace desteğini kullanın.

Topluluk kayıt defteri nedir? Topluluk kayıt defterleri, güvenilen Azure Machine Learning iş ortakları tarafından oluşturulan ve tüm Azure Machine Learning kullanıcılarının kullanımına sunulan Azure Machine Learning kayıt defterleridir.

Kullanıcılar Azure Machine Learning'de Hugging Face ile ilgili soru ve endişelerini nereye gönderebilir? Sorularınızı Azure Machine Learning tartışma forumunda gönderin.

Bölgesel kullanılabilirlik

Sarılma Yüz Tanıma Koleksiyonu şu anda yalnızca genel bulutun tüm bölgelerinde kullanılabilir.