Bagikan melalui


Cara menyebarkan model bahasa besar dengan Azure AI Studio

Penting

Beberapa fitur yang dijelaskan dalam artikel ini mungkin hanya tersedia dalam pratinjau. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan kami tidak merekomendasikannya untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Penyebaran model bahasa besar (LLM) membuatnya tersedia untuk digunakan di situs web, aplikasi, atau lingkungan produksi lainnya. Penyebaran biasanya melibatkan hosting model di server atau di cloud dan membuat API atau antarmuka lain bagi pengguna untuk berinteraksi dengan model. Anda dapat memanggil penyebaran untuk inferensi real time aplikasi AI generatif seperti obrolan dan salinan.

Dalam artikel ini, Anda mempelajari cara menyebarkan model bahasa besar di Azure AI Studio. Anda dapat menyebarkan model dari katalog model atau dari proyek Anda. Anda juga dapat menyebarkan model menggunakan Azure Pembelajaran Mesin SDK. Artikel ini juga membahas cara melakukan inferensi pada model yang disebarkan.

Menyebarkan dan menyimpulkan model API Tanpa Server dengan kode

Penyebaran model

Model API tanpa server adalah model yang dapat Anda sebarkan dengan penagihan bayar sesuai penggunaan. Contohnya termasuk Phi-3, Llama-2, Command R, Mistral Large, dan banyak lagi. Untuk model API tanpa server, Anda hanya dikenakan biaya untuk inferensi, kecuali Anda memilih untuk menyempurnakan model.

Mendapatkan ID model

Anda dapat menyebarkan model API Tanpa Server menggunakan Azure Pembelajaran Mesin SDK, tetapi pertama-tama, mari kita telusuri katalog model dan dapatkan ID model yang Anda butuhkan untuk penyebaran.

  1. Masuk ke AI Studio dan buka halaman Beranda .

  2. Pilih Katalog model dari bilah sisi kiri.

  3. Di filter Opsi penyebaran, pilih API Tanpa Server.

    Cuplikan layar yang menunjukkan cara memfilter berdasarkan model API tanpa server dalam katalog.

  4. Pilih model.

  5. Salin ID model dari halaman detail model yang Anda pilih. Ini terlihat seperti ini: azureml://registries/azureml-cohere/models/Cohere-command-r-plus/versions/3

Pasang Azure Machine Learning SDK

Selanjutnya, Anda perlu menginstal Azure Pembelajaran Mesin SDK. Di terminal Anda, jalankan perintah berikut:

pip install azure-ai-ml
pip install azure-identity

Menyebarkan model API tanpa server

Pertama, Anda perlu mengautentikasi ke Azure AI.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import MarketplaceSubscription, ServerlessEndpoint

# You can find your credential information in project settings.
client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

Kedua, mari kita referensikan ID model yang Anda temukan sebelumnya.

# You can find the model ID on the model catalog.
model_id="azureml://registries/azureml-meta/models/Llama-2-70b-chat/versions/18" 

Model API tanpa server dari penyedia model pihak ketiga memerlukan langganan Marketplace Azure untuk menggunakan model. Mari kita buat langganan marketplace.

Catatan

Anda dapat melewati bagian jika Anda menyebarkan model API Tanpa Server dari Microsoft, seperti Phi-3.

# You can customize the subscription name.
subscription_name="Meta-Llama-2-70b-chat" 

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id,
    name=subscription_name,
)

marketplace_subscription = client.marketplace_subscriptions.begin_create_or_update(
    marketplace_subscription
).result()

Terakhir, mari kita buat titik akhir tanpa server.


endpoint_name="Meta-Llama-2-70b-chat-qwerty" # Your endpoint name must be unique

serverless_endpoint = ServerlessEndpoint(
    name=endpoint_name,
    model_id=model_id
)

created_endpoint = client.serverless_endpoints.begin_create_or_update(
    serverless_endpoint
).result()

Mendapatkan titik akhir dan kunci API Tanpa Server

endpoint_keys = client.serverless_endpoints.get_keys(endpoint_name)
print(endpoint_keys.primary_key)
print(endpoint_keys.secondary_key)

Inferensi penyebaran

Untuk inferensi, Anda ingin menggunakan kode yang secara khusus melayani berbagai jenis model dan SDK yang Anda gunakan. Anda dapat menemukan sampel kode di repositori sampel Azure/azureml-examples.

Menyebarkan dan menyimpulkan penyebaran komputasi terkelola dengan kode

Penyebaran model

Katalog model AI Studio menawarkan lebih dari 1.600 model, dan cara paling umum untuk menyebarkan model ini adalah dengan menggunakan opsi penyebaran komputasi terkelola, yang juga kadang-kadang disebut sebagai penyebaran online terkelola.

Mendapatkan ID model

Anda dapat menyebarkan model komputasi terkelola menggunakan Azure Pembelajaran Mesin SDK, tetapi pertama-tama, mari kita telusuri katalog model dan dapatkan ID model yang Anda butuhkan untuk penyebaran.

  1. Masuk ke AI Studio dan buka halaman Beranda .

  2. Pilih Katalog model dari bilah sisi kiri.

  3. Di filter Opsi penyebaran, pilih Komputasi terkelola.

    Cuplikan layar memperlihatkan cara memfilter berdasarkan model komputasi terkelola dalam katalog.

  4. Pilih model.

  5. Salin ID model dari halaman detail model yang Anda pilih. Ini terlihat seperti ini: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

Pasang Azure Machine Learning SDK

Untuk langkah ini, Anda perlu menginstal Azure Pembelajaran Mesin SDK.

pip install azure-ai-ml
pip install azure-identity

Menyebarkan model

Pertama, Anda perlu mengautentikasi ke Azure AI.

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

Mari kita sebarkan model.

Untuk opsi penyebaran komputasi terkelola, Anda perlu membuat titik akhir sebelum penyebaran model. Anggap titik akhir sebagai kontainer yang dapat menampung beberapa penyebaran model. Nama titik akhir harus unik di suatu wilayah, jadi dalam contoh ini kita menggunakan tanda waktu untuk membuat nama titik akhir yang unik.

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

Buat penyebaran. Anda dapat menemukan ID model di katalog model.

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

Inferensi penyebaran

Anda memerlukan sampel data json untuk menguji inferensi. Buat sample_score.json dengan contoh berikut.

{
  "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."
    ]
  }
}

Mari kita inferensi dengan sample_score.json. Ubah lokasi berdasarkan tempat Anda menyimpan sampel file json Anda.

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

Menghapus titik akhir penyebaran

Untuk menghapus penyebaran di AI Studio, pilih tombol Hapus di panel atas halaman detail penyebaran.

Pertimbangan kuota

Untuk menyebarkan dan melakukan inferensi dengan titik akhir real time, Anda menggunakan kuota inti Komputer Virtual (VM) yang ditetapkan ke langganan Anda berdasarkan per wilayah. Saat mendaftar ke AI Studio, Anda menerima kuota VM default untuk beberapa keluarga VM yang tersedia di wilayah tersebut. Anda dapat terus membuat penyebaran hingga mencapai batas kuota Anda. Setelah itu terjadi, Anda dapat meminta penambahan kuota.

Langkah berikutnya