A Machine Learning DevOps (MLOps) 2015-ben először kiemelte a Rejtett technikai adósságok a Machine Learning Systemsben , gyorsan növekszik. Az MLOps piaca várhatóan 2025-ig eléri a 4 milliárd dollárt. Addig is egyre fontosabbá válik az MLOps-megoldások védelme.
Ez a cikk azt ismerteti, hogyan védheti meg az MLOps-megoldásokat olyan Azure-beli hálózati biztonsági képességek használatával, mint az Azure Virtual Network, a hálózati társviszony-létesítés, az Azure Private Link és az Azure DNS. Emellett a következőket is bemutatja:
- Azure Pipelines a virtuális hálózat erőforrásainak eléréséhez
- Az Azure Container Registry és az Azure Machine Learning számítási példányainak és fürtjeinek szükséges konfigurációi egy virtuális hálózaton.
Végül ez a cikk a hálózati biztonsági szolgáltatások használatának költségeit ismerteti.
Architektúra
Töltse le az architektúra Visio-fájlját.
Adatfolyam
Az architektúradiagram egy MLOps-mintamegoldást mutat be.
Az AML VNET nevű virtuális hálózat segít megvédeni az Azure Machine Learning-munkaterületet és a hozzá tartozó erőforrásokat.
A jump host, az Azure Bastion és a saját üzemeltetésű ügynökök egy másik, BASTION VNET nevű virtuális hálózathoz tartoznak. Ez a megoldás egy másik megoldást szimulál, amely hozzáférést igényel az Azure Machine Learning virtuális hálózat erőforrásaihoz.
A virtuális hálózatok közötti társviszony-létesítés és a privát DNS-zónák támogatásával az Azure Pipelines önkiszolgáló ügynökökön hajthatja végre és aktiválhatja az Azure Machine Learning-munkaterületen közzétett Azure Machine Learning-folyamatokat a gépi tanulási modellek betanításához, kiértékeléséhez és regisztrálásához.
Végül a modell az Azure Machine Learning compute vagy az Azure Kubernetes Service-fürtök által támogatott online végpontokon vagy kötegvégpontokon van üzembe helyezve.
Összetevők
Az MLOps-mintamegoldás a következő összetevőkből áll:
- Adattárolás: Azure Blob Storage adattároláshoz.
- Modell betanítása, érvényesítése és regisztrálása: Azure Machine Learning-munkaterület
- Modell üzembe helyezése: Azure Machine Learning-végpontok és Azure Kubernetes Service
- Modellfigyelő: Azure Monitor for Application Insights
- MLOps-folyamatok: Azure DevOps és Azure Pipelines
Ez a példaforgatókönyv a következő szolgáltatásokat is használja az MLOps-megoldás védelméhez:
Forgatókönyv részletei
Az MLOps a Machine Learning, a DevOps és az adatmérnökség metszetében alkalmazott eljárások készlete, amelynek célja, hogy a gépi tanulási modelleket megbízhatóan és hatékonyan üzembe helyezze és karbantartsa az éles környezetben.
Az alábbi ábrán egy egyszerűsített MLOps-folyamatmodell látható. Ez a modell olyan megoldást kínál, amely automatizálja az adatok előkészítését, a modell betanítását, a modell kiértékelését, a modellregisztrációt, a modell üzembe helyezését és a monitorozást.
Az MLOps-megoldás implementálásakor érdemes lehet az alábbi erőforrások védelmét biztosítani:
- DevOps-folyamatok
- Gépi tanulási betanítási adatok
- Machine Learning-folyamatok
- Gépi tanulási modellek
Az erőforrások biztonságossá tételéhez vegye figyelembe az alábbi módszereket:
Hitelesítés és engedélyezés
- Az interaktív hitelesítés helyett használjon szolgáltatásneveket vagy felügyelt identitásokat .
- Szerepköralapú hozzáférés-vezérléssel meghatározhatja a felhasználó erőforrásokhoz való hozzáférésének hatókörét.
Hálózati biztonság
- A virtuális hálózat használatával részlegesen vagy teljesen elkülönítheti a környezetet a nyilvános internettől a támadási felület és az adatkiszivárgás lehetőségének csökkentése érdekében.
- Az Azure Machine Learning-munkaterületen, ha továbbra is az Azure Machine Learning CLI v1-et és az Azure Machine Learning Python SDK v1-et (például v1 API-t) használja, adjon hozzá egy privát végpontot a munkaterülethez, hogy hálózati elkülönítést biztosítson a munkaterületen vagy számítási erőforrásokon végzett létrehozási, olvasási, frissítési és törlési (CRUD) műveletek kivételével.
- Az Azure Machine Learning-munkaterület új funkcióinak kihasználásához használja az Azure Machine Learning CLI v2-t és az Azure Machine Learning Python SDK v2-t (például v2 API-t), amelyben a privát végpont engedélyezése a munkaterületen nem biztosítja a hálózati elkülönítés azonos szintjét. A virtuális hálózat azonban továbbra is segít megvédeni a betanítási adatokat és a gépi tanulási modelleket. Javasoljuk, hogy értékelje ki a v2 API-t, mielőtt bevezeti azt a vállalati megoldásokban. További információ: Mi az új API-platform az Azure Resource Managerben?
- A virtuális hálózat használatával részlegesen vagy teljesen elkülönítheti a környezetet a nyilvános internettől a támadási felület és az adatkiszivárgás lehetőségének csökkentése érdekében.
Adattitkosítás
- A betanítási adatok átvitel közben és inaktív állapotban történő titkosítása platform által felügyelt vagy ügyfél által felügyelt hozzáférési kulcsokkal.
Szabályzat és figyelés
- Szabályzatok kikényszerítéséhez használja az Azure Policyt és a Felhőhöz készült Microsoft Defender.
- Az Azure Monitor használatával különböző forrásokból származó adatokat (például metrikákat és naplókat) gyűjthet és összesíthet egy közös adatplatformon elemzés, vizualizáció és riasztás céljából.
Az Azure Machine Learning-munkaterület az Azure Machine Learning legfelső szintű erőforrása és az MLOps-megoldás alapvető összetevője. A munkaterület központi helyet biztosít az Azure Machine Learning használatakor létrehozott összes összetevővel való munkához.
Új munkaterület létrehozásakor automatikusan létrehozza a következő Azure-erőforrásokat, amelyeket a munkaterület használ:
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
- Azure Storage-fiók
Lehetséges használati esetek
Ez a megoldás megfelel azoknak a forgatókönyveknek, amelyekben az ügyfél MLOps-megoldást használ a gépi tanulási modellek biztonságosabb környezetben való üzembe helyezéséhez és karbantartásához. Az ügyfelek különböző iparágakból származhatnak, például a gyártásból, a távközlésből, a kiskereskedelemből, az egészségügyből stb. Példa:
A távközlési szolgáltató segít megvédeni az ügyfelek képeit, adatait és gépi tanulási modelljeit a kiskereskedelmi üzletek videomonitorozási rendszerében.
A motorgyártóknak biztonságosabb megoldásra van szükségük ahhoz, hogy megvédjék gyárai és termékei adatait és gépi tanulási modelljeit a rendszer számára, amely számítógépes látással észleli az alkatrészek hibáit.
Az ilyen forgatókönyvekhez és másokhoz készült MLOps-megoldások Azure Machine Learning-munkaterületeket, Azure Blob Storage-t, Azure Kubernetes Service-t, Tárolóregisztrációs adatbázist és más Azure-szolgáltatásokat használhatnak.
A példa egészét vagy egy részét használhatja minden olyan hasonló forgatókönyvhöz, amely rendelkezik az Azure-ban üzembe helyezett MLOps-környezettel, és az Azure biztonsági képességeivel segíti a megfelelő erőforrások védelmét. A megoldás eredeti ügyfele a távközlési iparágban található.
Megfontolások
Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amelyek olyan vezérelvek, amelyek alkalmazásukkor javítják a számítási feladatok minőségét. További információ: Microsoft Azure Well-Architected Framework.
Biztonság
A biztonság további biztosítékokat nyújt a szándékos támadások és az értékes adatokkal és rendszerekkel való visszaélés ellen. További információ: A biztonsági pillér áttekintése.
Fontolja meg, hogyan segítheti az MLOps-megoldás védelmét az architektúra kialakításától kezdve. Előfordulhat, hogy a fejlesztési környezetek nem igényelnek jelentős biztonságot, de fontos az előkészítési és éles környezetekben.
Költségoptimalizálás
A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pillér áttekintése.
A virtuális hálózat konfigurálása ingyenes, de a forgatókönyv által igényelt egyéb szolgáltatások, például a privát kapcsolatok, a DNS-zónák és a virtuális hálózatok közötti társviszony-létesítés díjkötelesek. Az alábbi táblázat az adott szolgáltatások és az esetlegesen szükséges egyéb szolgáltatások díjait ismerteti.
Azure-szolgáltatás | Díjszabás |
---|---|
Virtual Network | Ingyenes. |
Private Link | Csak a privát végpont erőforrás-óráiért és a privát végponton keresztül feldolgozott adatokért kell fizetnie. |
Azure DNS, privát zóna | A számlázás az Azure-ban üzemeltetett DNS-zónák száma és a fogadott DNS-lekérdezések száma alapján történik. |
Társviszony létesítése virtuális hálózatok között | A bejövő és a kimenő forgalom a társviszonyban lévő hálózatok mindkét végén díjköteles. |
VPN Gateway | A díjak az átjáró kiépítésének és rendelkezésre állásának időtartamán alapulnak. |
ExpressRoute | Az ExpressRoute és az ExpressRoute-átjárók díjai. |
Azure Bastion | A számlázás az óránkénti díjszabás kombinációját foglalja magában, amely termékváltozaton, skálázási egységeken és adatátviteli díjakon alapul. |
Működés eredményessége
Az üzemeltetési kiválóság azokat az üzemeltetési folyamatokat fedi le, amelyek üzembe helyeznek egy alkalmazást, és éles környezetben tartják azt. További információ: A működési kiválósági pillér áttekintése.
A folyamatos integráció és a folyamatos teljesítés (CI/CD) egyszerűsítése érdekében az ajánlott eljárás az infrastruktúra eszközeinek és szolgáltatásainak használata kódként (IaC), például Terraform- vagy Azure Resource Manager-sablonok, Azure DevOps és Azure Pipelines.
A forgatókönyv üzembe helyezése
A következő szakaszok bemutatják, hogyan helyezhet üzembe, érhet el és védhet meg erőforrásokat ebben a példaforgatókönyvben.
Virtual Network
Az MLOps-környezet védelmének első lépése az Azure Machine Learning-munkaterület és a hozzá tartozó erőforrások védelme. A védelem hatékony módja a virtuális hálózat használata. A virtuális hálózat az Azure-beli magánhálózat alapvető építőeleme. A virtuális hálózat lehetővé teszi, hogy az Azure-erőforrások számos típusa biztonságosabban kommunikáljon egymással, az internettel és a helyszíni hálózatokkal.
Az Azure Machine Learning-munkaterület és a hozzá tartozó erőforrások virtuális hálózatba helyezése segít biztosítani, hogy az összetevők kommunikálhassanak egymással anélkül, hogy közzétenné őket a nyilvános interneten. Ez csökkenti a támadási felületet, és segít megelőzni az adatok kiszivárgását.
Az alábbi Terraform-kódrészlet bemutatja, hogyan hozhat létre számítási fürtöt az Azure Machine Learninghez, hogyan csatolhatja azt egy munkaterülethez, és hogyan helyezheti el egy virtuális hálózat alhálózatán.
resource "azurerm_machine_learning_compute_cluster" "compute_cluster" {
name = "my_compute_cluster"
location = "eastasia"
vm_priority = "LowPriority"
vm_size = "Standard_NC6s_v3"
machine_learning_workspace_id = azurerm_machine_learning_workspace.my_workspace.id
subnet_resource_id = azurerm_subnet.compute_subnet.id
ssh_public_access_enabled = false
scale_settings {
min_node_count = 0
max_node_count = 3
scale_down_nodes_after_idle_duration = "PT30S"
}
identity {
type = "SystemAssigned"
}
}
Private Link és Azure Private Endpoint
A Private Link lehetővé teszi a virtuális hálózat privát végpontján keresztül az Azure-platform szolgáltatásként (PaaS) való elérését, például egy Azure Machine Learning-munkaterülethez és az Azure Storage-hoz, valamint az Azure által üzemeltetett, ügyfél által birtokolt és partneri tulajdonú szolgáltatásokhoz. A privát végpontok olyan hálózati adapterek, amelyek csak adott erőforrásokhoz csatlakoznak, így védelmet nyújtanak az adatok kiszivárgása ellen.
Ebben a példaforgatókönyvben négy privát végpont van, amelyek az Azure PaaS-beállításokhoz vannak kötve, és amelyeket az Azure Machine Learning virtuális hálózatának alhálózata felügyel, ahogyan az architektúradiagramon is látható. Ezért ezek a szolgáltatások csak ugyanazon a virtuális hálózaton, az Azure Machine Learning virtuális hálózaton belüli erőforrásokhoz érhetők el. Ezek a szolgáltatások a következők:
- Azure Machine Learning-munkaterület
- Azure Blob Storage
- Azure Container Registry
- Azure Key Vault
Az alábbi Terraform-kódrészlet bemutatja, hogyan lehet privát végpontot használni egy Azure Machine Learning-munkaterülethez való csatoláshoz, amelyet a virtuális hálózat ennek eredményeként jobban véd. A kódrészlet egy privát DNS-zóna használatát is megjeleníti, amely az Azure saját DNS zónákban található.
resource "azurerm_machine_learning_workspace" "aml_ws" {
name = "my_aml_workspace"
friendly_name = "my_aml_workspace"
location = "eastasia"
resource_group_name = "my_resource_group"
application_insights_id = azurerm_application_insights.my_ai.id
key_vault_id = azurerm_key_vault.my_kv.id
storage_account_id = azurerm_storage_account.my_sa.id
container_registry_id = azurerm_container_registry.my_acr_aml.id
identity {
type = "SystemAssigned"
}
}
# Configure private DNS zones
resource "azurerm_private_dns_zone" "ws_zone_api" {
name = "privatelink.api.azureml.ms"
resource_group_name = var.RESOURCE_GROUP
}
resource "azurerm_private_dns_zone" "ws_zone_notebooks" {
name = "privatelink.notebooks.azure.net"
resource_group_name = var.RESOURCE_GROUP
}
# Link DNS zones to the virtual network
resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_api_link" {
name = "ws_zone_link_api"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_api.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}
resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_notebooks_link" {
name = "ws_zone_link_notebooks"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_notebooks.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}
# Configure private endpoints
resource "azurerm_private_endpoint" "ws_pe" {
name = "my_aml_ws_pe"
location = "eastasia"
resource_group_name = "my_resource_group"
subnet_id = azurerm_subnet.my_subnet.id
private_service_connection {
name = "my_aml_ws_psc"
private_connection_resource_id = azurerm_machine_learning_workspace.aml_ws.id
subresource_names = ["amlworkspace"]
is_manual_connection = false
}
private_dns_zone_group {
name = "private-dns-zone-group-ws"
private_dns_zone_ids = [azurerm_private_dns_zone.ws_zone_api.id, azurerm_private_dns_zone.ws_zone_notebooks.id]
}
# Add the private link after configuring the workspace
depends_on = [azurerm_machine_learning_compute_instance.compute_instance, azurerm_machine_learning_compute_cluster.compute_cluster]
}
Az előző kód azurerm_machine_learning_workspace
alapértelmezés szerint v2 API-platformot használ. Ha továbbra is használni szeretné a v1 API-t, vagy olyan vállalati szabályzattal rendelkezik, amely tiltja a nyilvános hálózatokon keresztüli kommunikáció küldését, engedélyezheti a v1_legacy_mode_enabled
paramétert, ahogyan az az alábbi kódrészletben látható. Ha engedélyezve van, ez a paraméter letiltja a munkaterület v2 API-ját.
resource "azurerm_machine_learning_workspace" "aml_ws" {
...
public_network_access_enabled = false
v1_legacy_mode_enabled = true
}
Azure-beli saját DNS-zónák
Az Azure DNS megbízható, biztonságosabb DNS-szolgáltatást biztosít a virtuális hálózatok tartományneveinek kezeléséhez és feloldásához anélkül, hogy egyéni DNS-megoldást kellene hozzáadnia. Privát DNS-zónák használatával egyéni tartományneveket használhat az Azure által megadott nevek helyett. A privát DNS-zónák DNS-feloldása csak a hozzá kapcsolódó virtuális hálózatokból működik.
Ez a mintamegoldás privát végpontokat használ az Azure Machine Learning-munkaterülethez és a hozzá kapcsolódó erőforrásokhoz, például az Azure Storage-hoz, az Azure Key Vaulthoz vagy a Container Registryhez. Ezért a DNS-beállításokat úgy kell konfigurálnia, hogy feloldja a privát végpontok IP-címeit a kapcsolati sztring teljes tartománynevéből (FQDN).
Egy privát DNS-zónát virtuális hálózathoz csatolhat adott tartományok feloldásához.
A Private Link és az Azure Private Endpoint Terraform-kódrészlete két privát DNS-zónát hoz létre az Azure-szolgáltatások DNS-zónakonfigurációjában ajánlott zónanevek használatával:
privatelink.api.azureml.ms
privatelink.notebooks.azure.net
Társviszony létesítése virtuális hálózatok között
A virtuális hálózatok közötti társviszony-létesítés lehetővé teszi a jump-host virtuális gép (VM) vagy a saját üzemeltetésű ügynök virtuális gépek elérését az Azure Bastion virtuális hálózatban lévő erőforrásokhoz az Azure Machine Learning virtuális hálózat erőforrásaihoz. Kapcsolati célokból a két virtuális hálózat egyként működik. A virtuális gépek és az Azure Machine Learning-erőforrások közötti forgalom a társhálózatokban az Azure gerincinfrastruktúráját használja. A virtuális hálózatok közötti forgalmat az Azure magánhálózata irányítja át.
Az alábbi Terraform-kódrészlet beállítja a virtuális hálózatok közötti társviszonyt az Azure Machine Learning virtuális hálózat és az Azure Bastion virtuális hálózat között.
# Virtual network peering for AML VNET and BASTION VNET
resource "azurerm_virtual_network_peering" "vp_amlvnet_basvnet" {
name = "vp_amlvnet_basvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.amlvnet.name
remote_virtual_network_id = azurerm_virtual_network.basvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}
resource "azurerm_virtual_network_peering" "vp_basvnet_amlvnet" {
name = "vp_basvnet_amlvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.basvnet.name
remote_virtual_network_id = azurerm_virtual_network.amlvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}
A virtuális hálózat erőforrásainak elérése
Ha az Azure Machine Learning-munkaterületet egy virtuális hálózaton szeretné elérni, például az Azure Machine Learning virtuális hálózatát ebben a forgatókönyvben, használja az alábbi módszerek egyikét:
- Azure VPN Gateway
- Azure ExpressRoute
- Az Azure Bastion és a jump host virtuális gép
További információ: Csatlakozás a munkaterülethez.
A virtuális hálózat erőforrásait elérő Azure Pipelines futtatása
Az Azure Pipelines automatikusan buildel és tesztel projekteket, hogy elérhetővé tegye azokat mások számára. Az Azure Pipelines a CI/CD-t kombinálva teszteli és elkészíti a kódot, és bármilyen célnak elküldi.
Az Azure által üzemeltetett ügynökök és a saját üzemeltetésű ügynökök
Az MLOps-megoldás ebben a példában két folyamatból áll, amelyek aktiválhatják az Azure Machine Learning-folyamatokat, és hozzáférhetnek a kapcsolódó erőforrásokhoz. Mivel az Azure Machine Learning-munkaterület és a hozzá tartozó erőforrás egy virtuális hálózatban található, ennek a forgatókönyvnek módot kell biztosítania az Azure Pipelines-ügynök számára a hozzáférésükre. Az ügynök egy olyan telepített ügynökszoftverrel rendelkező számítási infrastruktúra, amely egyenként futtatja az Azure Pipelines feladatait. A hozzáférés többféleképpen is implementálható:
Használjon saját üzemeltetésű ügynököket ugyanabban a virtuális hálózatban vagy a társviszony-létesítési virtuális hálózatban, ahogy az architektúradiagramon is látható.
Használja az Azure által üzemeltetett ügynököket, és adja hozzá IP-címtartományaikat a célzott Azure-szolgáltatások tűzfalbeállításainak engedélyezési listájához.
Használjon Azure-beli ügynököket (VPN-ügyfelekként) és VPN Gatewayt.
Mindegyik választásnak vannak előnyei és hátrányai. Az alábbi táblázat az Azure által üzemeltetett ügynököket hasonlítja össze a saját üzemeltetésű ügynökökkel.
Azure által üzemeltetett ügynök | Saját üzemeltetésű ügynök | |
---|---|---|
Költségek | Havonta 1800 perccel és az Azure által üzemeltetett CI/CD párhuzamos feladatok díjával ingyenesen indíthat egy párhuzamos feladatot. | Kezdjen ingyenesen egy párhuzamos feladatért, havonta korlátlan percekért, és korlátlan percdíjért minden további saját üzemeltetésű CI/CD párhuzamos feladatért. Ez a lehetőség kevésbé költséges párhuzamos feladatokat kínál. |
Karbantartás | A Microsoft gondoskodik Önről. | Az Ön által karbantartott szoftver nagyobb mértékben szabályozható a kívánt szoftver telepítése felett. |
Létrehozási idő | Több időt vesz igénybe, mert teljesen frissül minden alkalommal, amikor elindít egy buildet, és mindig az alapoktól épít. | Időt takarít meg, mert megőrzi az összes fájlt és gyorsítótárat. |
Feljegyzés
Az aktuális díjszabásért tekintse meg az Azure DevOps díjszabását.
A táblázatban szereplő összehasonlítások és a biztonság és összetettség szempontjai alapján ez a példaforgatókönyv egy saját üzemeltetésű ügynököt használ az Azure Pipelineshoz az Azure Machine Learning-folyamatok aktiválásához a virtuális hálózaton.
A saját üzemeltetésű ügynök konfigurálásához az alábbi lehetőségek közül választhat:
Telepítse az ügynököt az Azure-beli virtuális gépekre.
Telepítse az ügynököket egy Azure-beli virtuálisgép-méretezési csoportra, amely automatikusan skálázható az igényeknek megfelelően.
Telepítse az ügynököt egy Docker-tárolóra. Ez a lehetőség nem megvalósítható, mert ez a forgatókönyv megkövetelheti a Docker-tároló futtatását az ügynökön belül a gépi tanulási modell betanításához.
Az alábbi mintakód két saját üzemeltetésű ügynököt helyez üzembe Azure-beli virtuális gépek és bővítmények létrehozásával:
resource "azurerm_linux_virtual_machine" "agent" {
...
}
resource "azurerm_virtual_machine_extension" "update-vm" {
count = 2
name = "update-vm${format("%02d", count.index)}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.1"
virtual_machine_id = element(azurerm_linux_virtual_machine.agent.*.id, count.index)
settings = <<SETTINGS
{
"script": "${base64encode(templatefile("../scripts/terraform/agent_init.sh", {
AGENT_USERNAME = "${var.AGENT_USERNAME}",
ADO_PAT = "${var.ADO_PAT}",
ADO_ORG_SERVICE_URL = "${var.ADO_ORG_SERVICE_URL}",
AGENT_POOL = "${var.AGENT_POOL}"
}))}"
}
SETTINGS
}
Ahogy az előző kódblokkban látható, a Terraform-szkript az ügyfél igényeinek megfelelően meghívja agent_init.sh, hogy telepítse az ügynökszoftvereket és a szükséges kódtárakat az ügynök virtuális gépére.
#!/bin/sh
# Install other required libraries
...
# Creates directory and downloads Azure DevOps agent installation files
# Find more agent versions at https://github.com/microsoft/azure-pipelines-agent/releases
AGENT_VERSION="3.240.1"
sudo mkdir /myagent
cd /myagent
sudo wget https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo tar zxvf ./vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo chmod -R 777 /myagent
# Unattended installation
sudo runuser -l ${AGENT_USERNAME} -c '/myagent/config.sh --unattended --url ${ADO_ORG_SERVICE_URL} --auth pat --token ${ADO_PAT} --pool ${AGENT_POOL}'
cd /myagent
#Configure as a service
sudo ./svc.sh install ${AGENT_USERNAME}
#Start service
sudo ./svc.sh start
Tárolóregisztrációs adatbázis használata a virtuális hálózaton
Az Azure Machine Learning-munkaterületek biztonságossá tételének előfeltételei egy virtuális hálózatban. További információkat az Előfeltételek között talál. A Container Registry egy kötelező szolgáltatás, ha Azure Machine Learning-munkaterületet használ a modellek betanítása és üzembe helyezése érdekében.
Ebben a példában annak érdekében, hogy a saját üzemeltetésű ügynök hozzáférhessen a tárolóregisztrációs adatbázishoz a virtuális hálózaton, virtuális hálózati társviszony-létesítést használunk, és hozzáadunk egy virtuális hálózati kapcsolatot a privát DNS-zóna és privatelink.azurecr.io
az Azure Bastion virtuális hálózat összekapcsolásához. Az alábbi Terraform-kódrészlet a megvalósítást mutatja be.
# Azure Machine Learning Container Registry is for private access
# by the Azure Machine Learning workspace
resource "azurerm_container_registry" "acr" {
name = "my_acr"
resource_group_name = "my_resource_group"
location = "eastasia"
sku = "Premium"
admin_enabled = true
public_network_access_enabled = false
}
resource "azurerm_private_dns_zone" "acr_zone" {
name = "privatelink.azurecr.io"
resource_group_name = "my_resource_group"
}
resource "azurerm_private_dns_zone_virtual_network_link" "acr_zone_link" {
name = "link_acr"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.acr_zone.name
virtual_network_id = azurerm_virtual_network.amlvnet.id
}
resource "azurerm_private_endpoint" "acr_ep" {
name = "acr_pe"
resource_group_name = "my_resource_group"
location = "eastasia"
subnet_id = azurerm_subnet.aml_subnet.id
private_service_connection {
name = "acr_psc"
private_connection_resource_id = azurerm_container_registry.acr.id
subresource_names = ["registry"]
is_manual_connection = false
}
private_dns_zone_group {
name = "private-dns-zone-group-app-acr"
private_dns_zone_ids = [azurerm_private_dns_zone.acr_zone.id]
}
}
Ez a példaforgatókönyv azt is biztosítja, hogy a tárolóregisztrációs adatbázis közreműködői szerepkörrel rendelkezik az Azure Machine Learning-munkaterület rendszer által hozzárendelt felügyelt identitásához.
Számítási fürt vagy példány használata a virtuális hálózaton
A virtuális hálózatban lévő Azure Machine Learning számítási fürtökhöz vagy -példányokhoz szükség van egy hálózati biztonsági csoportra (NSG), amelynek bizonyos szabályai vannak az alhálózatára vonatkozóan. A szabályok listáját a Korlátozások című témakörben találja.
Azt is vegye figyelembe, hogy a számítási fürt vagy példány esetében mostantól eltávolítható a nyilvános IP-cím, amely jobb védelmet nyújt a számítási erőforrások számára az MLOps-megoldásban. További információ: Nincs nyilvános IP-cím számítási példányokhoz.
Közreműködők
Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.
Fő szerzők:
- Gary Wang | Fő szoftvermérnök
Egyéb közreműködők:
- Gary Moore | Programozó/író
A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.
Következő lépések
- Terraform az Azure-ban – dokumentáció
- Azure Machine Learning Enterprise Terraform-példák
- Azure MLOps (v2) megoldásgyorsító
- Az Azure Virtual Network díjszabása
- Az Azure DevOps díjszabása