共用方式為


如何使用 Azure Machine Learning 工作室部署 Meta Llama 模型

在本文中,您將了解 Meta Llama 模型 (LLM)。 您也會瞭解如何使用 Azure Machine Learning 工作室,透過隨用隨付或受控計算,將模型從此集合部署至無伺服器 API。

重要

深入閱讀 Azure AI 模型目錄上現在提供的 Meta Llama 3 模型公告資訊:Microsoft 技術社群部落格,以及從 Meta 公告部落格

Meta Llama 3 模型和工具是一組經過預先訓練和微調的生成式文字模型集合,參數規模從 80 億到 700 億不等。 Meta Llama 模型系列也包含針對對話使用案例進行最佳化的微調版本,並透過人類意見反應 (RLHF) 進行強化學習,稱為 Meta-Llama-3-8B-Instruct 和 Meta-Llama-3-70B-Instruct。 請參閱下列 GitHub 範例,以探索與 LangChainLiteLLMOpenAIAzure API 的整合。

重要

此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。

如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

將 Meta Llama 模型部署為無伺服器 API

模型目錄中的某些模型可以部署為無伺服器 API,並隨用隨付計費,提供一種方式,以 API 的形式取用它們,而不在您的訂用帳戶上裝載它們,同時維持企業安全性和合規性組織的需求。 此部署選項不需要您的訂用帳戶提供配額。

Meta Llama 模型會部署為無伺服器 API,隨用隨付計費是由 Meta AI 透過 Microsoft Azure Marketplace 提供,而且可能會新增更多使用規定和定價。

Azure Marketplace 模型供應項目

當部署為無伺服器 API 且隨用隨付計費時,Azure Marketplace 中適用於 Meta Llama 模型的下列模型:

如果您需要部署不同的模型,請 改為將其部署至受控計算

必要條件

  • 具有有效付款方式的 Azure 訂用帳戶。 免費版或試用版 Azure 訂用帳戶將無法運作。 如果您沒有 Azure 訂用帳戶,請建立付費 Azure 帳戶以開始。

  • Azure Machine Learning 工作區和計算執行個體。 如果您沒有這些資源,請使用快速入門:建立工作區資源 (部分機器翻譯) 一文中的步驟加以建立。

    重要

    隨用隨付模型部署供應項目僅適用於在美國東部 2瑞典中部區域為 Meta Llama 3 模型建立的工作區。

  • Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您的使用者帳戶必須獲指派 Azure 訂用帳戶的擁有者參與者角色。 或者,可以為您的帳戶指派具有下列權限的自訂角色:

    • 在 Azure 訂用帳戶上 - 以為工作區訂閱 Azure Marketplace 供應項目的權限,需針對每個供應項目為每個工作區執行一次:

      • Microsoft.MarketplaceOrdering/agreements/offers/plans/read
      • Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
      • Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.SaaS/register/action
    • 在資源群組上 - 以建立及使用 SaaS 資源:

      • Microsoft.SaaS/resources/read
      • Microsoft.SaaS/resources/write
    • 在工作區上 - 以部署端點 (Azure Machine Learning 資料科學家角色已經包含這些權限):

      • Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
      • Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*

    如需關於權限的詳細資訊,請參閱管理對 Azure Machine Learning 工作區的存取

建立新的部署

若要建立部署:

  1. 移至 Azure Machine Learning 工作室

  2. 選取您要在其中部署模型的工作區。 若要使用隨用隨付模型部署供應項目,您的工作區必須屬於美國東部 2瑞典中部區域。

  3. 選擇您想要從模型目錄部署的模型。

    或者,您可以移至工作區,然後選取 [端點]> [無伺服器端點]> [建立] 來起始部署。

  4. 在模型的概觀頁面上,選取 [部署],然後選取 [使用 Azure AI 內容部署] 和 [無伺服器 API 保管庫 ty]。

  5. 在部署精靈上,選取 [Azure Marketplace 條款] 的連結,以深入了解使用規定。 您也可以選取 [Marketplace 供應項目詳細資料] 索引標籤,以了解所選模型的價格。

  6. 如果這是您第一次在工作區中部署模型,您必須從 Azure Marketplace 為工作區訂閱特定供應項目 (例如 Meta-Llama-3-70B)。 此步驟會要求您的帳戶具有必要條件中所列的 Azure 訂用帳戶權限和資源群組權限。 每個工作區都有自己的特定 Azure Marketplace 供應項目的訂用帳戶,可讓您控制及監視支出。 選取 [訂閱並部署]

    注意

    為工作區訂閱特定 Azure Marketplace 供應項目 (在此情況下為 Llama-3-70B) 時,您的帳戶必須具有專案建立所在之訂用帳戶層級的參與者擁有者存取權。 或者,可以為您的使用者帳戶指派具有必要條件中所列的 Azure 訂用帳戶權限和資源群組權限的自訂角色。

  7. 當您為工作區註冊特定 Azure Marketplace 供應項目之後,就不需要再次訂閱相同工作區中的相同供應項目的後續部署。 因此,您不需要具有後續部署的訂用帳戶層級權限。 如果此案例適合您,請選取 [繼續部署]

  8. 為部署指定名稱。 此名稱會成為部署 API URL 的一部分。 此 URL 在每個 Azure 區域中都必須是唯一的。

  9. 選取部署。 等候部署完成,即會將您重新導向無伺服器端點頁面。

  10. 選取端點以開啟其 [詳細資料] 頁面。

  11. 選取 [測試] 索引標籤以開始與模型互動。

  12. 您也可以記下 [目標] URL 和 [祕密金鑰],以呼叫部署並產生完成。

  13. 您可以瀏覽至 [工作區]> [端點]> [無伺服器端點],以尋找端點的詳細資料、URL 和存取金鑰。

若要瞭解部署為無伺服器 API 的 Meta Llama 模型計費,請參閱 部署為無伺服器 API 的 Meta Llama 模型的成本和配額考慮。

以服務的形式取用 Meta Llama 模型

部署為服務的模型可以使用聊天或完成 API 來取用,取決於您所部署的模型類型。

  1. 在 [工作區] 中,選取 [端點]> [無伺服器端點]

  2. 尋找並選取您所建立的部署。

  3. 複製 [目標] URL 和 [金鑰] 權杖值。

  4. 根據您所部署的模型類型提出 API 要求。

    如需使用 API 的詳細資訊,請參閱參考一節。

Meta Llama 模型的參考已部署無伺服器 API

Llama 模型接受路由 /chat/completions 上的 Azure AI 模型推斷 API/v1/chat/completions 上的 Llama 聊天 API。 同樣地,您可以使用路由 /completions 上的 Azure AI 模型推斷 API,或 /v1/completions 上的 Llama 完成 API 來生成文字完成

可以在 聊天完成的參考 文章中找到 Azure AI 模型推斷 API 結構描述,並且可以從端點本身取得 OpenAPI 規格

完成 API

使用 POST 方法將要求傳送至 /v1/completions 路由:

要求

POST /v1/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

要求結構描述

承載是包含下列參數的 JSON 格式字串:

機碼 類型 預設 描述
prompt string 沒有預設值。 必須指定此值。 要傳送至模型的提示。
stream boolean False 串流可讓產生的權杖在可用時,以僅限資料伺服器傳送的事件的形式傳送。
max_tokens integer 16 完成時要產生的權杖數目上限。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。
top_p float 1 核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。 一般會建議改變 top_ptemperature,但不建議同時改變。
temperature float 1 要使用的取樣溫度,介於 0 到 2 之間。 較高的值表示模型對權杖分佈更廣泛地取樣。 零表示窮盡取樣。 建議改變此項目或 top_p,但不建議同時改變。
n integer 1 每個提示要產生的完成項數量。
注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。
stop array null 字串或字串清單包含 API 會停止進一步產生權杖的文字。 傳回的文字不會包含停止序列。
best_of integer 1 產生 best_of 完成伺服器端,並傳回「最佳」項目 (具有每個權杖最低對數機率的項目)。 結果不能串流。 搭配 n 使用時,best_of 會控制待選完成項的數目,而 n 則會指定傳回的數目,best_of 必須大於 n
注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。
logprobs integer null 包括最可能是權杖之 logprobs 的對數機率以及所選權杖。 例如,如果有 10 個 logprobs,則 API 會傳回 10 個最可能的權杖清單。 API 一律會傳回取樣權杖的 logprob,因此回應中可能包含多達 logprobs+1 個元素。
presence_penalty float null 介於 -2.0 和 2.0 之間的數字。 正值會根據權杖迄今為止是否出現在文字中來打壓新權杖,提高模型討論新主題的可能性。
ignore_eos boolean True 是否要忽略 EOS 權杖,並在產生 EOS 權杖之後繼續產生權杖。
use_beam_search boolean False 是否要使用集束搜尋而不是取樣。 在該情況下,best_of 必須大於 1,而 temperature 必須是 0
stop_token_ids array null 產生時會停止進一步產生權杖之權杖的識別碼清單。 傳回的輸出包含停止權杖,除非停止權杖是特殊權杖。
skip_special_tokens boolean null 是否要在輸出中跳過特殊權杖。

範例

本文

{
    "prompt": "What's the distance to the moon?",
    "temperature": 0.8,
    "max_tokens": 512,
}

回應結構描述

回應承載是具有下列欄位的字典。

機碼 類型 描述
id string 完成的唯一識別碼。
choices array 輸入提示所產生模型的完成選項清單。
created integer 建立完成時的 Unix 時間戳記 (以秒為單位)。
model string 用於完成的 model_id。
object string 物件類型,一律為 text_completion
usage object 完成要求的使用量統計資料。

提示

在串流模式中,對於每個回應區塊,finish_reason 一律是 null,但最後一個由承載 [DONE] 終止的區塊除外。

choices 物件是具有下列欄位的字典。

機碼 類型 描述
index integer 選擇索引。 當 best_of> 1 時,此陣列中的索引可能順序不定,而且可能不是 0 到 n-1。
text string 完成結果。
finish_reason string 模型停止產生權杖的原因:
- stop:模型達到自然停止點或提供的停止序列。
- length:如果已達到權杖數目上限。
- content_filter:當 RAI 仲裁且 CMP 強制仲裁時。
- content_filter_error:仲裁期間發生錯誤,無法決定回應。
- null:API 回應仍在進行中或不完整。
logprobs object 輸出文字中產生的權杖的對數機率。

usage 物件是具有下列欄位的字典。

機碼 類型
prompt_tokens integer 提示中的權杖數目。
completion_tokens integer 完成中產生的權杖數目。
total_tokens integer 權杖總數。

logprobs 物件是具有下列欄位的字典:

機碼 類型
text_offsets arrayintegers 完成輸出中每個權杖的位置或索引。
token_logprobs arrayfloat 已從 top_logprobs 陣列中的字典選取 logprobs
tokens arraystring 選取的權杖。
top_logprobs arraydictionary 字典的陣列。 在每個字典中,索引鍵是權杖,而值則是機率。

範例

{
    "id": "12345678-1234-1234-1234-abcdefghijkl",
    "object": "text_completion",
    "created": 217877,
    "choices": [
        {
            "index": 0,
            "text": "The Moon is an average of 238,855 miles away from Earth, which is about 30 Earths away.",
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 7,
        "total_tokens": 23,
        "completion_tokens": 16
    }
}

聊天 API

使用 POST 方法將要求傳送至 /v1/chat/completions 路由:

要求

POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

要求結構描述

承載是包含下列參數的 JSON 格式字串:

機碼 類型 預設 描述
messages string 沒有預設值。 必須指定此值。 用來提示模型的訊息或訊息歷程記錄。
stream boolean False 串流可讓產生的權杖在可用時,以僅限資料伺服器傳送的事件的形式傳送。
max_tokens integer 16 完成時要產生的權杖數目上限。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。
top_p float 1 核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。 一般會建議改變 top_ptemperature,但不建議同時改變。
temperature float 1 要使用的取樣溫度,介於 0 到 2 之間。 較高的值表示模型對權杖分佈更廣泛地取樣。 零表示窮盡取樣。 建議改變此項目或 top_p,但不建議同時改變。
n integer 1 每個提示要產生的完成項數量。
注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。
stop array null 字串或字串清單包含 API 會停止進一步產生權杖的文字。 傳回的文字不會包含停止序列。
best_of integer 1 產生 best_of 完成伺服器端,並傳回「最佳」項目 (具有每個權杖最低對數機率的項目)。 結果不能串流。 搭配 n 使用時,best_of 會控制待選完成項的數目,而 n 則會指定傳回的數目,best_of 必須大於 n
注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。
logprobs integer null 包括最可能是權杖之 logprobs 的對數機率以及所選權杖。 例如,如果有 10 個 logprobs,則 API 會傳回 10 個最可能的權杖清單。 API 一律會傳回取樣權杖的 logprob,因此回應中可能包含多達 logprobs+1 個元素。
presence_penalty float null 介於 -2.0 和 2.0 之間的數字。 正值會根據權杖迄今為止是否出現在文字中來打壓新權杖,提高模型討論新主題的可能性。
ignore_eos boolean True 是否要忽略 EOS 權杖,並在產生 EOS 權杖之後繼續產生權杖。
use_beam_search boolean False 是否要使用集束搜尋而不是取樣。 在該情況下,best_of 必須大於 1,而 temperature 必須是 0
stop_token_ids array null 產生時會停止進一步產生權杖之權杖的識別碼清單。 傳回的輸出包含停止權杖,除非停止權杖是特殊權杖。
skip_special_tokens boolean null 是否要在輸出中跳過特殊權杖。

messages 物件具有下列欄位:

機碼 類型
content string 訊息的內容。 所有訊息都需要內容。
role string 訊息作者的角色。 systemuserassistant 的其中之一。

範例

本文

{
    "messages":
    [
        { 
        "role": "system", 
        "content": "You are a helpful assistant that translates English to Italian."},
        {
        "role": "user", 
        "content": "Translate the following sentence from English to Italian: I love programming."
        }
    ],
    "temperature": 0.8,
    "max_tokens": 512,
}

回應結構描述

回應承載是具有下列欄位的字典。

機碼 類型 描述
id string 完成的唯一識別碼。
choices array 輸入訊息所產生模型的完成選項清單。
created integer 建立完成時的 Unix 時間戳記 (以秒為單位)。
model string 用於完成的 model_id。
object string 物件類型,一律為 chat.completion
usage object 完成要求的使用量統計資料。

提示

在串流模式中,對於每個回應區塊,finish_reason 一律是 null,但最後一個由承載 [DONE] 終止的區塊除外。 在每個 choices 物件中,messages 的索引鍵會由 delta 變更。

choices 物件是具有下列欄位的字典。

機碼 類型 描述
index integer 選擇索引。 當 best_of> 1 時,此陣列中的索引可能順序不定,而且可能不是 0n-1
messagesdelta string messages 物件中的聊天完成結果。 使用串流模式時,會使用 delta 索引鍵。
finish_reason string 模型停止產生權杖的原因:
- stop:模型達到自然停止點或提供的停止序列。
- length:如果已達到權杖數目上限。
- content_filter:當 RAI 仲裁且 CMP 強制仲裁時
- content_filter_error:仲裁期間發生錯誤,無法決定回應
- null:API 回應仍在進行中或不完整。
logprobs object 輸出文字中產生的權杖的對數機率。

usage 物件是具有下列欄位的字典。

機碼 類型
prompt_tokens integer 提示中的權杖數目。
completion_tokens integer 完成中產生的權杖數目。
total_tokens integer 權杖總數。

logprobs 物件是具有下列欄位的字典:

機碼 類型
text_offsets arrayintegers 完成輸出中每個權杖的位置或索引。
token_logprobs arrayfloat 已從 top_logprobs 陣列中的字典選取 logprobs
tokens arraystring 選取的權杖。
top_logprobs arraydictionary 字典的陣列。 在每個字典中,索引鍵是權杖,而值則是機率。

範例

以下是回覆範例:

{
    "id": "12345678-1234-1234-1234-abcdefghijkl",
    "object": "chat.completion",
    "created": 2012359,
    "model": "",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "Sure, I\'d be happy to help! The translation of ""I love programming"" from English to Italian is:\n\n""Amo la programmazione.""\n\nHere\'s a breakdown of the translation:\n\n* ""I love"" in English becomes ""Amo"" in Italian.\n* ""programming"" in English becomes ""la programmazione"" in Italian.\n\nI hope that helps! Let me know if you have any other sentences you\'d like me to translate."
            }
        }
    ],
    "usage": {
        "prompt_tokens": 10,
        "total_tokens": 40,
        "completion_tokens": 30
    }
}

將 Meta Llama 模型部署至受控計算

除了使用隨用隨付受控服務進行部署之外,您也可以將 Llama 3 模型部署到 Azure Machine Learning 工作室 中的受控計算。 部署至受控計算時,您可以選取執行模型之基礎結構的所有詳細數據,包括要使用的虛擬機,以及要處理所預期負載的實例數目。 部署至受控計算的模型會從您的訂用帳戶取用配額。 Meta Llama 系列中的所有模型都可以部署到受控計算。

建立新的部署

遵循這些步驟以在 Azure Machine Learning 工作室中將 Llama-3-7B-Instruct 之類的模型部署至即時端點。

  1. 選取您想要將模型部署至其中的工作區。

  2. 選擇您想要從工作室的模型目錄部署的模型。

    或者,您可以移至工作區,然後選取 [端點]> [即時端點]> [建立] 來起始部署。

  3. 在模型的概觀頁面上,選取 [部署],然後選取 [不使用 Azure AI 內容受控計算] 保管庫 ty

  4. 在 [使用 Azure AI 內容安全部署 (預覽)] 頁面上,選取 [跳過 Azure AI 內容安全] 以繼續使用 UI 部署模型。

    提示

    一般而言,我們建議您針對 Meta Llama 模型部署選取 [啟用 Azure AI 內容安全 (建議)]。 此部署選項目前僅支援搭配 Python SDK 使用,且其會在筆記本中發生。

  5. 選取 [繼續]

    提示

    如果您在選取的專案中沒有足夠的可用配額,您可以使用選項 [我想要使用共用配額且我了解此端點將會在 168 小時後刪除]

  6. 選取您想要指派給部署的 [虛擬機器] 和 [執行個體計數]

  7. 請只在您想要作為新端點或現有端點的一部分建立此部署的情況下才選取。 端點可以裝載多個部署,同時使每個部署的資源設定保持獨佔。 相同端點下的部署會共用端點 URI 與其存取金鑰。

  8. 指出您是否要啟用 [Inferencing data collection (preview)] \(推斷資料收集 (預覽)\)。

  9. 指出您是否要啟用 [Package Model (preview)] \(封裝模型 (預覽)\)。

  10. 選取部署。 過幾分鐘之後,便會開啟端點的 [詳細資料] 頁面。

  11. 等候完成端點的建立和部署。 此步驟可能需要幾分鐘的時間。

  12. 選取端點的 [取用] 頁面,以取得您可以用來在應用程式中取用已部署模型的程式碼範例。

如需如何使用 Studio 將模型部署至受控計算的詳細資訊,請參閱 將基礎模型部署至用於推斷的端點。

取用部署至受控計算的Meta Llama模型

如需如何叫用已部署到即時端點之 Meta Llama 3 模型的相關參考,請參閱該模型在 Azure Machine Learning 工作室模型目錄中的卡片。 每個模型的卡片都會有概觀頁面,其中包括模型的描述、程式碼型推斷的範例、微調,以及模型評估。

成本和配額

部署為無伺服器 API 之 Meta Llama 模型的成本和配額考慮

部署為無伺服器 API 的 Meta Llama 模型是由 Meta 透過 Azure Marketplace 提供,並與 Azure Machine Learning 工作室 整合以供使用。 您可以在部署或微調模型時找到 Azure Marketplace 價格。

每當工作區向 Azure Marketplace 訂閱指定的模型供應項目時,都會建立新的資源,以便追蹤與其使用量相關聯的成本。 會使用相同的資源來追蹤與推斷和微調相關聯的成本;不過,可以使用多個計量獨立追蹤每個情節。

如需如何追蹤成本的詳細資訊,請參閱監視透過 Azure Marketplace 提供的模型成本 (部分機器翻譯)。

顯示與不同模型供應項目及其相關聯計量相對應的不同資源的螢幕擷取畫面。

配額會根據每個部署管理。 每個部署的速率限制為每分鐘 200,000 個權杖,每分鐘 1,000 個 API 要求。 不過,我們目前限制每個專案的每個模型為一個部署。 如果目前的速率限制無法滿足您的情節,請連絡 Microsoft Azure 支援。

已部署受控計算之Meta Llama模型的成本和配額考慮

若要使用受控計算部署和推斷 Meta Llama 模型,您會取用依每個區域指派給訂用帳戶的虛擬機 (VM) 核心配額。 當您註冊 Azure Machine Learning 工作室時,您會針對該區域中提供的數個 VM 系列獲得預設的 VM 配額。 您可以繼續建立部署,直到達到配額限制為止。 當您達到此限制時,可以要求提升配額。

內容篩選

部署為無伺服器 API 的模型會受到 Azure AI 內容安全性的保護。 部署至受控計算時,您可以退出宣告這項功能。 啟用 Azure AI 內容安全後,提示和完成都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選系統會偵測並針對輸入提示和輸出完成中的特定類別的潛在有害內容採取動作。 深入了解 Azure AI 內容安全 (部分機器翻譯)。