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 KeyError
ile 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 True
ayarlaması 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.