Mixtral:數(shù)據(jù)流中的生成式稀疏專家混合模型 原創(chuàng)
Cloudera公司數(shù)據(jù)流首席工程師Tim Spann 表示,Mixtral-8x7B大型語言模型(LLM)是一個預(yù)先訓(xùn)練的生成式稀疏專家混合模型。
他表示,這個模型很有趣,也很容易理解。在適當(dāng)?shù)奶崾鞠?,它似乎表現(xiàn)很好。而通過用例,他并不確定Mixtral-8x7B是否比Google Gemma、Meta LLAMA2或OLLAMA Mistral更好。
Spann撰寫的文章將展示如何使用Mixtral LLM,只需要幾個步驟就可以針對文本輸入運(yùn)行Mixtral LLM。
該模型可以由輕量級無服務(wù)器REST API或Transformer庫運(yùn)行。也可以使用GitHub存儲庫,其場景最多可以有32000個令牌。開發(fā)人員還可以輸入英語、意大利語、德語、西班牙語和法語的提示。關(guān)于如何利用這一模型有很多選項,而本文將展示如何利用Apache NiFi系統(tǒng)構(gòu)建實時LLM管道。
開發(fā)人員需要決定的一個關(guān)鍵問題是將使用什么樣的輸入(聊天、代碼生成、問答、文檔分析、摘要等)。一旦決定輸入,需要創(chuàng)建一些提示,并且進(jìn)行調(diào)整。文中將提供一些指導(dǎo),幫助提高快速構(gòu)建技能。Spann在其演練教程中介紹一些基本的提示工程。
構(gòu)建最佳提示的指南
提示符的構(gòu)建對于使其正常工作非常關(guān)鍵,因此使用Apache NiFi系統(tǒng)構(gòu)建提示符。
流程概述
步驟1:創(chuàng)建并格式化提示符
在構(gòu)建應(yīng)用程序時,以下是將要使用的基本提示模板。
提示模板
{
"inputs":
"<s>[INST]Write a detailed complete response that appropriately
answers the request.[/INST]
[INST]Use this information to enhance your answer:
${context:trim():replaceAll('"',''):replaceAll('\n', '')}[/INST]
User: ${inputs:trim():replaceAll('"',''):replaceAll('\n', '')}</s>"
}
將在ReplaceText處理器的替換值字段中輸入這個提示符。
步驟2:構(gòu)建對HuggingFace REST API的調(diào)用,根據(jù)模型進(jìn)行分類
在數(shù)據(jù)流中添加一個InvokeHTTP處理器,將HTTP URL設(shè)置為Mixtral API URL。
步驟3:查詢轉(zhuǎn)換和清理結(jié)果
使用QueryRecord處理器來清理和轉(zhuǎn)換抓取generated_text字段的HuggingFace結(jié)果。
步驟4:添加元數(shù)據(jù)字段
使用UpdateRecord處理器來添加元數(shù)據(jù)字段、JSON讀取器和寫入器,以及文字值替換值策略(Literal Value Replacement Value Strategy)。而正在添加的字段是添加屬性。
發(fā)送到Kafka和Slack的概述。
步驟5:將元數(shù)據(jù)添加到數(shù)據(jù)流
使用UpdateAttribute處理器來添加正確的“application/json Content Type”,并將模型類型設(shè)置為Mixtral。
步驟6:將清理后的記錄發(fā)送到Kafka Topic
將它發(fā)送到本地Kafka代理(可能是Docker或其他)和flank-mixtral8x7B主題。如果不存在,NiFi和Kafka會自動創(chuàng)建一個。
步驟7:重新嘗試發(fā)送
如果出現(xiàn)問題,將嘗試重新發(fā)送三次,然后中止。
將數(shù)據(jù)推送到Slack的概述。
步驟8:將相同的數(shù)據(jù)發(fā)送到Slack供用戶回復(fù)
第一步是拆分為單個記錄,每次發(fā)送一個記錄。為此使用SplitRecord處理器。
和以前一樣,重用JSON樹讀取器和JSON記錄集編寫器。像往常一樣,選擇“1”作為“每次拆分的記錄”。
步驟9:使生成的文本可用于消息傳遞
使用EvaluateJsonPath從Mixtral (on HuggingFace)提取生成的文本。
步驟10:將回復(fù)發(fā)送到Slack
使用PublishSlack處理器,這是Apache NiFi 2.0的新功能。這需要設(shè)定頻道名稱或頻道ID。選擇使用“Message Text”屬性的發(fā)布策略。對于消息文本,使用下面的Slack Response模板。
對于用戶的最終回復(fù)需要一個 Slack 響應(yīng)模板,該模板的格式應(yīng)符合需要的溝通方式。以下是一個具有基本功能的示例。
Slack響應(yīng)模板
===============================================================================================================
HuggingFace ${modelinformation} Results on ${date}:
Question: ${inputs}
Answer:
${generated_text}
=========================================== Data for nerds ====
HF URL: ${invokehttp.request.url}
TXID: ${invokehttp.tx.id}
== Slack Message Meta Data ==
ID: ${messageid} Name: ${messagerealname} [${messageusername}]
Time Zone: ${messageusertz}
== HF ${modelinformation} Meta Data ==
Compute Characters/Time/Type: ${x-compute-characters} / ${x-compute-time}/${x-compute-type}
Generated/Prompt Tokens/Time per Token: ${x-generated-tokens} / ${x-prompt-tokens} : ${x-time-per-token}
Inference Time: ${x-inference-time} // Queue Time: ${x-queue-time}
Request ID/SHA: ${x-request-id} / ${x-sha}
Validation/Total Time: ${x-validation-time} / ${x-total-time}
===============================================================================================================
運(yùn)行這一程序時,它將看起來像Slack中的下圖。
現(xiàn)在已經(jīng)向 Hugging Face 發(fā)送了提示,讓它針對 Mixtral 運(yùn)行,將結(jié)果發(fā)送到 Kafka,并通過 Slack 回復(fù)用戶。
現(xiàn)在已經(jīng)用零代碼完成了完整的Mixtral應(yīng)用程序。
結(jié)論
現(xiàn)在,已經(jīng)使用Apache NiFi、HuggingFace和Slack構(gòu)建了一個完整的往返程序,以使用新的Mixtral模型構(gòu)建聊天機(jī)器人。
學(xué)習(xí)摘要
- 學(xué)會了如何為HuggingFace Mixtral建立一個提示
- 學(xué)習(xí)如何清理數(shù)據(jù)流
- 構(gòu)建一個可以重用的HuggingFace REST調(diào)用
- 處理HuggingFace模型調(diào)用結(jié)果
- 發(fā)送第一條 Kafka 消息
- 格式化和構(gòu)建Slack調(diào)用
- 為生成式人工智能構(gòu)建一個完整的數(shù)據(jù)流
如果需要使用新的Apache NiFi 2.0的其他教程,可以查看:
以下是有關(guān)構(gòu)建Slack機(jī)器人的更多信息:
- ??Building a Real-Time Slackbot With Generative AI???
- ??Building an LLM Bot for Meetups and Conference Interactivity??
Tim Spann正在編寫Apache NiFi 2和生成式人工智能教程。
以下是他提供的一些資源:
??Mixture of Experts Explained??
??mistralai/Mixtral-8x7B-v0.1??
??Invoke the Mixtral 8x7B model on Amazon Bedrock for text generation??
??Running Mixtral 8x7b on M1 16GB??
??Mixtral-8x7B: Understanding and Running the Sparse Mixture of Experts by Mistral AI??
??Retro-Engineering a Database Schema: Mistral Models vs. GPT4, LLama2, and Bard (Episode 3)??
??Comparison of Models: Quality, Performance & Price Analysis??
??A Beginner’s Guide to Fine-Tuning Mixtral Instruct Model??
原文標(biāo)題:Mixtral: Generative Sparse Mixture of Experts in DataFlows,作者:Tim Spann
鏈接:https://dzone.com/articles/mixtral-generative-sparse-mixture-of-experts-in-da。
