如何使用 Azure Machine Learning 工作室部署 Mistral 模型
在本文中,您會了解如何使用 Azure Machine Learning 工作室,將 Mistral 系列模型部署為隨用隨付權杖型計費方案的無伺服器 API。
Mistral AI 在 Azure Machine Learning 工作室中提供兩個類別的模型。 這些模型可在模型目錄中取得。
- 高級車型:米斯特拉爾大(2402)、米斯特拉爾大(2407)、米斯特拉爾小和部-3B。
- 開放式模型:Mistral Nemo、Mixtral-8x7B-Instruct-v01、Mixtral-8x7B-v01、Mistral-7B-Instruct-v01 和 Mistral-7B-v01。
所有進階模型和 MistralNemo (開放式模型) 都可以部署為無伺服器 API,並採用隨用隨付以權杖為基礎的計費。 其他開放式模型可以部署到您自己 Azure 訂用帳戶中的受控計算。
您可以篩選 Mistral 集合,以瀏覽模型目錄中的 Mistral 模型系列。
Mistral 系列模型
Mistral Large 是 Mistral AI 最先進的大型語言模型 (LLM)。 歸功於其最先進的推理和知識功能,它可用於任何以語言為基礎的工作。 Mistral Large 模型版本有兩種衍生產品:
- Mistral Large (2402)
- Mistral Large (2407)
此外,Mistral Large (2402) 的一些屬性包括:
- 在 RAG 中特殊化。 重要資訊不會在冗長內容視窗中遺失 (最多 32K 個權杖)。
- 撰寫程式碼功能強大。 程式碼產生、檢閱和註解。 支援所有主流程式碼編寫語言。
- 依設計為多語系。 效能業界最佳,除了英文外,還提供法文、德文、西班牙文和義大利文。 支援數十種其他語言。
- 符合負責任 AI 規範。 在模型中模擬的有效護欄,以及具有
safe_mode
選項的額外安全層。
Mistral Large (2407) 的屬性包括:
- 依設計為多語系。 支援數十種語言,包括英文、法文、德文、西班牙文和義大利文。
- 熟悉如何編寫程式碼。 接受超過 80 種編碼語言 (包括 Python、JAVA、C、C++、JavaScript 和 Bash) 的訓練。 也接受更特定語言 (例如 Swift 和 Fortran) 的訓練。
- 以代理程式為中心。 具有包含原生函式呼叫和 JSON 輸出的代理程式功能。
- 推理能力傑出。 示範最先進的數學和推理功能。
重要
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。
如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
以無伺服器 API 形式部署 Mistral 系列模型
模型目錄中的某些模型可以部署為隨用隨付計費方案的無伺服器 API。 這種部署可讓您以 API 的形式取用模型,而不必在您的訂用帳戶上裝載模型,同時讓組織保持所需的企業安全性和合規性。 此部署選項不需要您的訂用帳戶提供配額。
Mistral Large (2402) 和 Mistral Large (2407)、Mistral Small 和 Mistral Nemo 可以透過 Microsoft Azure Marketplace 部署為隨用隨付計費的無伺服器 API,並由 Mistral AI 提供。 Mistral AI 可以變更或更新這些模型的使用規定和價格。
必要條件
具有有效付款方式的 Azure 訂用帳戶。 免費版或試用版 Azure 訂用帳戶將無法運作。 如果您沒有 Azure 訂用帳戶,請建立付費 Azure 帳戶以開始。
Azure Machine Learning 工作區。 如果您沒有工作區,請依快速入門:建立工作區資源一文中的步驟來建立工作區資源。 Mistral 系列中合格模型的無伺服器 API 模型部署供應項目僅適用在這些區域中建立的工作區:
- 美國東部
- 美國東部 2
- 美國中北部
- 美國中南部
- 美國西部
- 美國西部 3
- 瑞典中部
如需支援無伺服器 API 端點部署的每個模型可用的區域清單,請參閱無伺服器 API 端點中模型的區域可用性
Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您的使用者帳戶必須獲指派資源群組上的 Azure AI 開發人員角色。 如需關於權限的詳細資訊,請參閱管理對 Azure Machine Learning 工作區的存取 (部分機器翻譯)。
建立新的部署
下列步驟示範 Mistral Large (2402) 的部署,但您可以藉由取代該模型名稱,使用相同的步驟,來部署 Mistral Nemo 或任何進階 Mistral 模型。
建立部署:
選取您要在其中部署模型的工作區。 若要使用無伺服器 API 模型部署供應項目,您的工作區必須屬於必要條件中列出的其中一個區域。
從模型目錄選擇您想要部署的模型,例如 Mistral Large (2402) 模型。
或者,您可以移至工作區,然後選取 [端點] > [無伺服器端點] > [建立] 來起始部署。
在模型目錄的模型概觀頁面上,選取 [部署] 以開啟模型的無伺服器 API 部署視窗。
選取核取方塊以確認 Microsoft 購買原則。
在部署精靈上,選取 [Azure Marketplace 條款] 的連結,以深入了解使用規定。
您也可以選取 [價格及使用規定] 索引標籤以了解所選模型的價格。
如果這是您第一次在工作區中部署模型,您必須為工作區訂閱特定供應項目 (例如 Mistral Large (2402))。 此步驟會要求您的帳戶具有資源群組上的 Azure AI 開發人員角色權限,如必要條件中所述。 每個工作區都有自己的特定 Azure Marketplace 供應項目的訂用帳戶,可讓您控制及監視支出。 選取 [訂閱並部署]。 目前,您只能在工作區內針對每個模型有一個部署。
當您為工作區訂閱特定 Azure Marketplace 供應項目之後,就不需要再次訂閱相同工作區中的相同供應項目的後續部署。 如果此案例適合您,您會看到 [繼續部署] 選項供選取。
為部署指定名稱。 此名稱會成為部署 API URL 的一部分。 此 URL 在每個 Azure 區域中都必須是唯一的。
選取部署。 等候部署完成,即會將您重新導向無伺服器端點頁面。
選取端點以開啟其 [詳細資料] 頁面。
選取 [測試] 索引標籤以開始與模型互動。
您可以瀏覽至 [工作區] > [端點] > [無伺服器端點],以尋找端點的詳細資料、URL 和存取金鑰。
若要了解將 Mistral AI 模型部署為隨用隨付權杖型計費方案的無伺服器 API 的計費方案,請參閱將 Mistral 系列模型部署為服務的成本和配額考量。
以服務形式取用 Mistral 模型系列
您可以使用聊天 API,來取用 Mistral 模型。
- 在 [工作區] 中,選取 [端點] > [無伺服器端點]。
- 尋找並選取您所建立的 部署。
- 複製 [目標] URL 和 [金鑰] 權杖值。
- 對路由
/chat/completions
上的 Azure AI 模型推斷 API 及/v1/chat/completions
上的原生 Mistral 聊天 API 提出 API 要求。
如需使用 API 的詳細資訊,請參閱參考一節。
部署為服務之 Mistral 系列模型的參考
Mistral 模型接受路由 /chat/completions
上的 Azure AI 模型推斷 API,以及 /v1/chat/completions
上的原生 Mistral 聊天 API。
Azure AI 模型推斷 API
您可以在 Chat Completions 參考文章中找到 Azure AI 模型推斷 API 結構描述,並且可以從端點本身取得 OpenAPI 規格。
Mistral 聊天 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 |
8192 |
完成時要產生的權杖數目上限。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 |
top_p |
float |
1 |
核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。 一般會建議改變 top_p 或 temperature ,但不建議同時改變。 |
temperature |
float |
1 |
要使用的取樣溫度,介於 0 到 2 之間。 較高的值表示模型對權杖分佈更廣泛地取樣。 零表示窮盡取樣。 建議改變此參數或 top_p ,但不建議改變兩者。 |
ignore_eos |
boolean |
False |
是否要忽略 EOS 權杖,並在產生 EOS 權杖之後繼續產生權杖。 |
safe_prompt |
boolean |
False |
是否要在所有交談之前插入安全提示。 |
messages
物件具有下列欄位:
機碼 | 類型 | 值 |
---|---|---|
content |
string |
訊息的內容。 所有訊息都需要內容。 |
role |
string |
訊息作者的角色。 system 、user 或 assistant 的其中之一。 |
要求範例
本文
{
"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 時,此陣列中的索引可能順序不定,而且可能不是 0 到 n-1 。 |
messages 或 delta |
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 |
array 的 integers |
完成輸出中每個權杖的位置或索引。 |
token_logprobs |
array 的 float |
已從 top_logprobs 陣列中的字典選取 logprobs 。 |
tokens |
array 的 string |
選取的權杖。 |
top_logprobs |
array 的 dictionary |
字典的陣列。 在每個字典中,索引鍵是權杖,而值則是機率。 |
回應範例
下列 JSON 是回應範例:
{
"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
}
}
更多推斷範例
取樣類型 | 範例 Notebook |
---|---|
使用 CURL 和 Python Web 要求的 CLI | webrequests.ipynb |
OpenAI SDK (實驗性) | openaisdk.ipynb |
LangChain | langchain.ipynb |
Mistral AI | mistralai.ipynb |
LiteLLM | litellm.ipynb |
成本和配額
部署為服務的 Mistral 模型系列成本和配額考量
部署為服務的 Mistral 模型是由 Mistral AI 透過 Azure Marketplace 提供,並與 Azure Machine Learning 工作室整合供使用。 您可以在部署模型時找到 Azure Marketplace 價格。
每當工作區向 Azure Marketplace 訂閱指定的模型供應項目時,都會建立新的資源,以便追蹤與其使用量相關聯的成本。 使用相同的資源來追蹤與推斷相關聯的成本;不過,可以使用多個計量獨立追蹤每個案例。
如需如何追蹤成本的詳細資訊,請參閱監視透過 Azure Marketplace 提供的模型成本 (部分機器翻譯)。
配額會根據每個部署管理。 每個部署的速率限制為每分鐘 200,000 個權杖,每分鐘 1,000 個 API 要求。 然而,我們目前限制每個工作區每個模型進行一次部署。 如果目前的速率限制無法滿足您的情節,請連絡 Microsoft Azure 支援。
內容篩選
部署為使用隨用隨付服務的模型會受到 Azure AI 內容安全的保護。 啟用 Azure AI 內容安全後,提示和完成都會通過旨在偵測及防止有害內容輸出的一組分類模型。 內容篩選 (預覽) 系統會偵測並針對輸入提示和輸出完成中潛在有害內容的特定類別採取動作。 深入了解 Azure AI 內容安全 (部分機器翻譯)。
相關內容
- 模型目錄和集合 (部分機器翻譯)
- 無伺服器 API 端點中模型的區域可用性
- 使用線上端點部署和評分機器學習模型
- 規劃和管理 Azure AI Studio 的成本 (部分機器翻譯)