Vytvoření a konfigurace všech prostředků pro odvozování modelu Azure AI
Důležité
Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
V tomto článku se dozvíte, jak vytvořit prostředky potřebné k odvozování modelu Azure AI a využívat hlavní modely z katalogu modelů Azure AI.
Požadavky
K dokončení tohoto článku potřebujete:
- Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.
Důležité
Portál Azure AI Foundry používá projekty a centra k vytváření účtů služeb Azure AI a konfiguraci odvozování modelů Azure AI. Pokud nechcete používat centra a projekty, můžete prostředky vytvořit pomocí Azure CLI, Bicep nebo vytvořit prostředek služeb Azure AI pomocí webu Azure Portal.
Vytvoření prostředků
Pokud chcete vytvořit projekt s účtem Azure AI Services, postupujte takto:
Přejděte na portál Azure AI Foundry.
Na cílové stránce vyberte Vytvořit projekt.
Pojmenujte projekt, například "my-project".
V tomto kurzu vytvoříme úplně nový projekt v novém centru AI, a proto vybereme Vytvořit nové centrum.
Pojmenujte centrum, například "my-hub" a vyberte Další.
Průvodce aktualizuje podrobnosti o prostředcích, které budou vytvořeny. Výběrem prostředků Azure, které se mají vytvořit , zobrazíte podrobnosti.
Uvidíte, že jsou vytvořeny následující prostředky:
Vlastnost Popis Skupina prostředků Hlavní kontejner pro všechny prostředky v Azure. To pomáhá získat prostředky, které spolupracují uspořádané. Pomáhá také mít rozsah nákladů spojených s celým projektem. Umístění Oblast prostředků, které vytváříte. Centrum Hlavní kontejner pro projekty AI v Azure AI Foundry. Centra podporují spolupráci a umožňují ukládat informace pro vaše projekty. Služby AI Prostředek, který umožňuje přístup k vlajkovým modelům v katalogu modelů Azure AI. V tomto kurzu se vytvoří nový účet, ale prostředky služeb Azure AI je možné sdílet napříč několika rozbočovači a projekty. Rozbočovače používají připojení k prostředku, aby měli přístup k nasazením modelu, které jsou tam k dispozici. Pokud se chcete dozvědět, jak vytvořit propojení mezi projekty a službami Azure AI Services, abyste mohli využívat odvozování modelu Azure AI, můžete si přečíst článek Připojení projektu AI. Vyberte Vytvořit. Spustí se proces vytváření prostředků.
Po dokončení je projekt připravený ke konfiguraci.
Odvození modelu Azure AI je funkce Preview, která je potřeba zapnout v Azure AI Foundry. V horním navigačním panelu v pravém rohu vyberte ikonu funkcí náhledu. Na pravé straně obrazovky se zobrazí kontextové okno.
Zapněte funkci Nasazení modelů do služby odvozování modelů Azure AI.
Zavřete panel.
Pokud chcete použít odvozování modelu Azure AI, musíte do účtu služeb Azure AI přidat nasazení modelů.
Důležité
Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Můžete se rozhodnout a nakonfigurovat, které modely jsou k dispozici pro odvozování v koncovém bodu odvozování. Když je daný model nakonfigurovaný, můžete z něj vygenerovat předpovědi tím, že u vašich požadavků označíte jeho název modelu nebo název nasazení. Abyste ho mohli použít, nemusíte v kódu provádět žádné další změny.
V tomto článku se dozvíte, jak přidat nový model do odvozování modelu Azure AI v Azure AI Foundry.
Požadavky
K dokončení tohoto článku potřebujete:
Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.
Prostředek služeb Azure AI
Nainstalujte Azure CLI a
cognitiveservices
rozšíření pro služby Azure AI:az extension add -n cognitiveservices
Některé příkazy v tomto kurzu používají
jq
nástroj, který nemusí být nainstalován ve vašem systému. Pokyny k instalaci naleznete v tématu Staženíjq
.Identifikujte následující informace:
ID vašeho předplatného Azure
Název prostředku azure AI Services
Skupina prostředků, ve které je nasazený prostředek Azure AI Services.
Přidání modelů
Pokud chcete přidat model, musíte nejprve identifikovat model, který chcete nasadit. Dostupné modely můžete dotazovat následujícím způsobem:
Přihlaste se k předplatnému Azure:
az login
Pokud máte více než 1 předplatné, vyberte předplatné, ve kterém se nachází váš prostředek:
az account set --subscription $subscriptionId>
Nastavte následující proměnné prostředí s názvem prostředku Azure AI Services, který plánujete použít a skupinu prostředků.
accountName="<ai-services-resource-name>" resourceGroupName="<resource-group>"
Pokud ještě nemáte účet Azure AI Services, můžete si ho vytvořit následujícím způsobem:
az cognitiveservices account create -n $accountName -g $resourceGroupName
Podívejme se nejprve, které modely jsou vám k dispozici a ve kterých skladových položkách. Následující příkaz zobrazí seznam všech dostupných definic modelu:
az cognitiveservices account list-models \ -n $accountName \ -g $resourceGroupName \ | jq '.[] | { name: .name, format: .format, version: .version, sku: .skus[0].name, capacity: .skus[0].capacity.default }'
Výstupy vypadají takto:
{ "name": "Phi-3.5-vision-instruct", "format": "Microsoft", "version": "2", "sku": "GlobalStandard", "capacity": 1 }
Identifikujte model, který chcete nasadit. Potřebujete vlastnosti
name
,format
,version
asku
. V závislosti na typu nasazení může být potřeba také kapacita.Tip
Všimněte si, že ve všech cenových úrovních nejsou dostupné všechny modely.
Přidejte do prostředku nasazení modelu. Následující příklad přidá
Phi-3.5-vision-instruct
:az cognitiveservices account deployment create \ -n $accountName \ -g $resourceGroupName \ --deployment-name Phi-3.5-vision-instruct \ --model-name Phi-3.5-vision-instruct \ --model-version 2 \ --model-format Microsoft \ --sku-capacity 1 \ --sku-name GlobalStandard
Model je připravený k použití.
Stejný model můžete v případě potřeby nasadit vícekrát, pokud je pod jiným názvem nasazení. Tato funkce může být užitečná v případě, že chcete otestovat různé konfigurace pro daný model, včetně bezpečnosti obsahu.
Správa nasazení
Všechna dostupná nasazení můžete zobrazit pomocí rozhraní příkazového řádku:
Spuštěním následujícího příkazu zobrazte všechna aktivní nasazení:
az cognitiveservices account deployment list -n $accountName -g $resourceGroupName
Zobrazí se podrobnosti o daném nasazení:
az cognitiveservices account deployment show \ --deployment-name "Phi-3.5-vision-instruct" \ -n $accountName \ -g $resourceGroupName
Dané nasazení můžete odstranit následujícím způsobem:
az cognitiveservices account deployment delete \ --deployment-name "Phi-3.5-vision-instruct" \ -n $accountName \ -g $resourceGroupName
Použití modelu
Nasazené modely v odvozování modelů Azure AI je možné využívat pomocí koncového bodu odvozování modelu Azure AI pro daný prostředek. Při vytváření požadavku uveďte parametr model
a vložte název nasazení modelu, který jste vytvořili. Identifikátor URI koncového bodu odvozování můžete získat prostřednictvím kódu programu pomocí následujícího kódu:
Koncový bod odvození
az cognitiveservices account show -n $accountName -g $resourceGroupName | jq '.properties.endpoints["Azure AI Model Inference API"]'
Pokud chcete vyhovět koncovému bodu odvozování modelu Azure AI, připojte trasu models
, například https://<resource>.services.ai.azure.com/models
. Referenční informace k rozhraní API pro koncový bod najdete na referenční stránce rozhraní API pro odvozování modelu Azure AI.
Klíče odvození
az cognitiveservices account keys list -n $accountName -g $resourceGroupName
Důležité
Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
V tomto článku se dozvíte, jak vytvořit prostředky potřebné k odvozování modelu Azure AI a využívat hlavní modely z katalogu modelů Azure AI.
Požadavky
K dokončení tohoto článku potřebujete:
- Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.
Nainstalujte rozhraní příkazového řádku Azure CLI.
Identifikujte následující informace:
- ID vašeho předplatného Azure
O tomto kurzu
Příklad v tomto článku vychází z ukázek kódu obsažených v úložišti Azure-Samples/azureai-model-inference-bicep . Pokud chcete příkazy spustit místně, aniž byste museli kopírovat nebo vkládat obsah souboru, naklonujte úložiště pomocí následujících příkazů a přejděte do složky pro váš kódovací jazyk:
git clone https://github.com/Azure-Samples/azureai-model-inference-bicep
Soubory pro tento příklad jsou v:
cd azureai-model-inference-bicep/infra
Vysvětlení prostředků
Tento kurz vám pomůže vytvořit:
- Prostředek Azure AI Services.
- Nasazení modelu v globální standardní SKU pro každý z modelů podporujících průběžné platby.
- (Volitelně) Projekt a centrum Azure AI.
- (Volitelně) Propojení mezi centrem a modely ve službách Azure AI.
K vytvoření těchto prostředků používáte následující prostředky:
Pomocí šablony
modules/ai-services-template.bicep
popíšete prostředek Azure AI Services:modules/ai-services-template.bicep
@description('Location of the resource.') param location string = resourceGroup().location @description('Name of the Azure AI Services account.') param accountName string @description('The resource model definition representing SKU') param sku string = 'S0' @description('Whether or not to allow keys for this account.') param allowKeys bool = true @allowed([ 'Enabled' 'Disabled' ]) @description('Whether or not public endpoint access is allowed for this account.') param publicNetworkAccess string = 'Enabled' @allowed([ 'Allow' 'Deny' ]) @description('The default action for network ACLs.') param networkAclsDefaultAction string = 'Allow' resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = { name: accountName location: location identity: { type: 'SystemAssigned' } sku: { name: sku } kind: 'AIServices' properties: { publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = account.properties.endpoints['Azure AI Model Inference API'] output id string = account.id
Použití šablony
modules/ai-services-deployment-template.bicep
k popisu nasazení modelu:modules/ai-services-deployment-template.bicep
@description('Name of the Azure AI services account') param accountName string @description('Name of the model to deploy') param modelName string @description('Version of the model to deploy') param modelVersion string @allowed([ 'AI21 Labs' 'Cohere' 'Core42' 'Meta' 'Microsoft' 'Mistral AI' 'OpenAI' ]) @description('Model provider') param modelPublisherFormat string @allowed([ 'GlobalStandard' 'Standard' 'GlobalProvisioned' 'Provisioned' ]) @description('Model deployment SKU name') param skuName string = 'GlobalStandard' @description('Content filter policy name') param contentFilterPolicyName string = 'Microsoft.DefaultV2' @description('Model deployment capacity') param capacity int = 1 resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = { name: '${accountName}/${modelName}' sku: { name: skuName capacity: capacity } properties: { model: { format: modelPublisherFormat name: modelName version: modelVersion } raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName } }
Pro usnadnění práce definujeme model, který chceme mít ve službě k dispozici pomocí souboru JSON. Soubor infra/models.json obsahuje seznam objektů JSON s klíči
name
version
, asku
, který definuje modely,provider
které nasazení zřídí. Vzhledem k tomu, že modely podporují průběžné platby, přidání nasazení modelů se neúčtují za dodatečné náklady. Upravte soubor, který odeberete nebo přidáte položky modelu, které chcete mít k dispozici. Následující příklad ukazuje pouze prvních 7 řádků souboru JSON:models.json
[ { "name": "AI21-Jamba-1.5-Large", "version": "1", "provider": "AI21 Labs", "sku": "GlobalStandard" },
Pokud plánujete používat projekty (doporučeno), potřebujete šablony pro vytvoření projektu, centra a připojení k prostředku azure AI Services:
modules/project-hub-template.bicep
param location string = resourceGroup().location @description('Name of the Azure AI hub') param hubName string = 'hub-dev' @description('Name of the Azure AI project') param projectName string = 'intelligent-apps' @description('Name of the storage account used for the workspace.') param storageAccountName string = replace(hubName, '-', '') param keyVaultName string = replace(hubName, 'hub', 'kv') param applicationInsightsName string = replace(hubName, 'hub', 'log') @description('The container registry resource id if you want to create a link to the workspace.') param containerRegistryName string = replace(hubName, '-', '') @description('The tags for the resources') param tagValues object = { owner: 'santiagxf' project: 'intelligent-apps' environment: 'dev' } var tenantId = subscription().tenantId var resourceGroupName = resourceGroup().name var storageAccountId = resourceId(resourceGroupName, 'Microsoft.Storage/storageAccounts', storageAccountName) var keyVaultId = resourceId(resourceGroupName, 'Microsoft.KeyVault/vaults', keyVaultName) var applicationInsightsId = resourceId(resourceGroupName, 'Microsoft.Insights/components', applicationInsightsName) var containerRegistryId = resourceId( resourceGroupName, 'Microsoft.ContainerRegistry/registries', containerRegistryName ) resource storageAccount 'Microsoft.Storage/storageAccounts@2019-04-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { encryption: { services: { blob: { enabled: true } file: { enabled: true } } keySource: 'Microsoft.Storage' } supportsHttpsTrafficOnly: true } tags: tagValues } resource keyVault 'Microsoft.KeyVault/vaults@2019-09-01' = { name: keyVaultName location: location properties: { tenantId: tenantId sku: { name: 'standard' family: 'A' } enableRbacAuthorization: true accessPolicies: [] } tags: tagValues } resource applicationInsights 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsName location: location kind: 'web' properties: { Application_Type: 'web' } tags: tagValues } resource containerRegistry 'Microsoft.ContainerRegistry/registries@2019-05-01' = { name: containerRegistryName location: location sku: { name: 'Standard' } properties: { adminUserEnabled: true } tags: tagValues } resource hub 'Microsoft.MachineLearningServices/workspaces@2024-07-01-preview' = { name: hubName kind: 'Hub' location: location identity: { type: 'systemAssigned' } sku: { tier: 'Standard' name: 'standard' } properties: { description: 'Azure AI hub' friendlyName: hubName storageAccount: storageAccountId keyVault: keyVaultId applicationInsights: applicationInsightsId containerRegistry: (empty(containerRegistryName) ? null : containerRegistryId) encryption: { status: 'Disabled' keyVaultProperties: { keyVaultArmId: keyVaultId keyIdentifier: '' } } hbiWorkspace: false } tags: tagValues } resource project 'Microsoft.MachineLearningServices/workspaces@2024-07-01-preview' = { name: projectName kind: 'Project' location: location identity: { type: 'systemAssigned' } sku: { tier: 'Standard' name: 'standard' } properties: { description: 'Azure AI project' friendlyName: projectName hbiWorkspace: false hubResourceId: hub.id } tags: tagValues }
modules/ai-services-connection-template.bicep
@description('Name of the hub where the connection will be created') param hubName string @description('Name of the connection') param name string @description('Category of the connection') param category string = 'AIServices' @allowed(['AAD', 'ApiKey', 'ManagedIdentity', 'None']) param authType string = 'AAD' @description('The endpoint URI of the connected service') param endpointUri string @description('The resource ID of the connected service') param resourceId string = '' @secure() param key string = '' resource connection 'Microsoft.MachineLearningServices/workspaces/connections@2024-04-01-preview' = { name: '${hubName}/${name}' properties: { category: category target: endpointUri authType: authType isSharedToAll: true credentials: authType == 'ApiKey' ? { key: key } : null metadata: { ApiType: 'Azure' ResourceId: resourceId } } }
Vytvoření prostředků
V konzole postupujte takto:
Definujte hlavní nasazení:
deploy-with-project.bicep
@description('Location to create the resources in') param location string = resourceGroup().location @description('Name of the resource group to create the resources in') param resourceGroupName string = resourceGroup().name @description('Name of the AI Services account to create') param accountName string = 'azurei-models-dev' @description('Name of the project hub to create') param hubName string = 'hub-azurei-dev' @description('Name of the project to create in the project hub') param projectName string = 'intelligent-apps' @description('Path to a JSON file with the list of models to deploy. Each model is a JSON object with the following properties: name, version, provider') var models = json(loadTextContent('models.json')) module aiServicesAccount 'modules/ai-services-template.bicep' = { name: 'aiServicesAccount' scope: resourceGroup(resourceGroupName) params: { accountName: accountName location: location } } module projectHub 'modules/project-hub-template.bicep' = { name: 'projectHub' scope: resourceGroup(resourceGroupName) params: { hubName: hubName projectName: projectName } } module aiServicesConnection 'modules/ai-services-connection-template.bicep' = { name: 'aiServicesConnection' scope: resourceGroup(resourceGroupName) params: { name: accountName authType: 'AAD' endpointUri: aiServicesAccount.outputs.endpointUri resourceId: aiServicesAccount.outputs.id hubName: hubName } dependsOn: [ projectHub ] } @batchSize(1) module modelDeployments 'modules/ai-services-deployment-template.bicep' = [ for (item, i) in models: { name: 'deployment-${item.name}' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: item.name modelVersion: item.version modelPublisherFormat: item.provider skuName: item.sku } dependsOn: [ aiServicesAccount ] } ] output endpoint string = aiServicesAccount.outputs.endpointUri
Přihlaste se k Azure:
az login
Ujistěte se, že jste ve správném předplatném:
az account set --subscription "<subscription-id>"
Spusťte nasazení:
RESOURCE_GROUP="<resource-group-name>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy-with-project.bicep
Pokud chcete nasadit pouze prostředek azure AI Services a nasazení modelu, použijte následující soubor nasazení:
deploy.bicep
@description('Location to create the resources in') param location string = resourceGroup().location @description('Name of the resource group to create the resources in') param resourceGroupName string = resourceGroup().name @description('Name of the AI Services account to create') param accountName string = 'azurei-models-dev' @description('Path to a JSON file with the list of models to deploy. Each model is a JSON object with the following properties: name, version, provider') var models = json(loadTextContent('models.json')) module aiServicesAccount 'modules/ai-services-template.bicep' = { name: 'aiServicesAccount' scope: resourceGroup(resourceGroupName) params: { accountName: accountName location: location } } @batchSize(1) module modelDeployments 'modules/ai-services-deployment-template.bicep' = [ for (item, i) in models: { name: 'deployment-${item.name}' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: item.name modelVersion: item.version modelPublisherFormat: item.provider skuName: item.sku } dependsOn: [ aiServicesAccount ] } ] output endpoint string = aiServicesAccount.outputs.endpointUri
Spusťte nasazení:
RESOURCE_GROUP="<resource-group-name>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.bicep
Šablona vypíše koncový bod odvozování modelu Azure AI, který můžete použít k využívání jakéhokoli vytvořeného nasazení modelu.