Yönetilen işlem dağıtımlarını kodla dağıtma ve çıkarsama
AI Studio model kataloğu 1.600'den fazla model sunar ve bu modelleri dağıtmanın en yaygın yolu, bazen yönetilen çevrimiçi dağıtım olarak da adlandırılan yönetilen işlem dağıtımı seçeneğini kullanmaktır.
Büyük bir dil modelinin (LLM) dağıtımı, bunu bir web sitesinde, uygulamada veya başka bir üretim ortamında kullanılabilir hale getirir. Dağıtım genellikle modeli bir sunucuda veya bulutta barındırmayı ve kullanıcıların modelle etkileşim kurması için bir API veya başka bir arabirim oluşturmayı içerir. Sohbet ve yardımcı pilot gibi üretken yapay zeka uygulamalarının gerçek zamanlı çıkarımı için dağıtımı çağırabilirsiniz.
Bu makalede, Azure Machine Learning SDK'sını kullanarak modelleri dağıtmayı öğreneceksiniz. Makale ayrıca dağıtılan modelde çıkarım gerçekleştirmeyi de kapsar.
Model kimliğini alma
Yönetilen işlem modellerini Azure Machine Learning SDK'sını kullanarak dağıtabilirsiniz, ancak önce model kataloğuna göz atalım ve dağıtım için ihtiyacınız olan model kimliğini alalım.
Sol kenar çubuğundan Model kataloğu'nu seçin.
Dağıtım seçenekleri filtresinde Yönetilen işlem'i seçin.
Bir model seçin.
Seçtiğiniz modelin ayrıntılar sayfasından model kimliğini kopyalayın. Şuna benzer:
azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16
Modeli dağıtma
Şimdi modeli dağıtalım.
İlk olarak Azure Machine Learning SDK'sını yüklemeniz gerekir.
pip install azure-ai-ml
pip install azure-identity
Azure Machine Learning ile kimlik doğrulaması yapmak ve bir istemci nesnesi oluşturmak için bu kodu kullanın. Yer tutucuları abonelik kimliğiniz, kaynak grubu adınız ve AI Studio proje adınızla değiştirin.
from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential
client = MLClient(
credential=InteractiveBrowserCredential,
subscription_id="your subscription name goes here",
resource_group_name="your resource group name goes here",
workspace_name="your project name goes here",
)
Yönetilen işlem dağıtımı seçeneği için model dağıtımından önce bir uç nokta oluşturmanız gerekir. Uç noktayı birden çok model dağıtımını barındırabilen bir kapsayıcı olarak düşünün. Uç nokta adlarının bir bölgede benzersiz olması gerektiğinden, bu örnekte benzersiz bir uç nokta adı oluşturmak için zaman damgasını kullanıyoruz.
import time, sys
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
ProbeSettings,
)
# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)
# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()
Dağıtım oluşturma. Model kimliğini model kataloğunda bulabilirsiniz.
model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16"
demo_deployment = ManagedOnlineDeployment(
name="demo",
endpoint_name=online_endpoint_name,
model=model_name,
instance_type="Standard_DS3_v2",
instance_count=2,
liveness_probe=ProbeSettings(
failure_threshold=30,
success_threshold=1,
timeout=2,
period=10,
initial_delay=1000,
),
readiness_probe=ProbeSettings(
failure_threshold=10,
success_threshold=1,
timeout=10,
period=10,
initial_delay=1000,
),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()
Dağıtımı çıkarım
Çıkarımı test etmek için örnek json verilerine ihtiyacınız vardır. Aşağıdaki örnekle oluşturun sample_score.json
.
{
"inputs": {
"question": [
"Where do I live?",
"Where do I live?",
"What's my name?",
"Which name is also used to describe the Amazon rainforest in English?"
],
"context": [
"My name is Wolfgang and I live in Berlin",
"My name is Sarah and I live in London",
"My name is Clara and I live in Berkeley.",
"The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
]
}
}
ile sample_score.json
çıkarım yapalım. Örnek json dosyanızı kaydettiğiniz konuma göre konumu değiştirin.
scoring_file = "./sample_score.json"
response = workspace_ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name="demo",
request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))
Dağıtım uç noktasını silme
AI Studio'da dağıtımları silmek için dağıtım ayrıntıları sayfasının üst panelindeki Sil düğmesini seçin.
Kotayla ilgili dikkat edilmesi gerekenler
Gerçek zamanlı uç noktalarla çıkarım yapmak ve dağıtmak için, aboneliğinize bölge başına atanan Sanal Makine (VM) çekirdek kotasını kullanırsınız. AI Studio'ya kaydolduğunda, bölgede kullanılabilen birkaç VM ailesi için varsayılan VM kotası alırsınız. Kota sınırınıza ulaşana kadar dağıtım oluşturmaya devam edebilirsiniz. Bu durumda kota artışı isteyebilirsiniz.
Sonraki adımlar
- AI Studio'da neler yapabileceğiniz hakkında daha fazla bilgi edinin
- Azure AI SSS makalesinde sık sorulan soruların yanıtlarını alma