mistral-inference 是由 Mistral AI 官方開發的 Mistral 模型推理庫,提供了運行各種 Mistral 模型的最小化程式碼實現。這個項目為使用者提供了一個高效、簡潔的方式來部署和使用 Mistral 系列的大語言模型。
mistral-demo
和 mistral-chat
命令快速測試和互動torchrun
支援大模型的分布式推理from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
# 加載模型和分詞器
tokenizer = MistralTokenizer.from_file("./mistral-nemo-instruct-v0.1/tekken.json")
model = Transformer.from_folder("./mistral-nemo-instruct-v0.1")
# 生成響應
prompt = "How expensive would it be to ask a window cleaner to clean all windows in Paris?"
completion_request = ChatCompletionRequest(messages=[UserMessage(content=prompt)])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=1024, temperature=0.35)
支援圖像和文字的聯合推理,可以分析圖片內容並回答相關問題:
# 多模態內容處理
user_content = [ImageURLChunk(image_url=url), TextChunk(text=prompt)]
tokens, images = tokenizer.instruct_tokenizer.encode_user_content(user_content, False)
out_tokens, _ = generate([tokens], model, images=[images], max_tokens=256)
所有模型都支援函數呼叫功能,可以與外部工具和API整合:
# 定義工具函數
tools=[Tool(function=Function(
name="get_current_weather",
description="Get the current weather",
parameters={...}
))]
# 執行函數呼叫
completion_request = ChatCompletionRequest(tools=tools, messages=[...])
專門針對程式碼編輯場景,支援中間填充式程式碼生成:
prefix = "def add("
suffix = " return sum"
request = FIMRequest(prompt=prefix, suffix=suffix)
tokens = tokenizer.encode_fim(request).tokens
pip install mistral-inference
cd $HOME && git clone https://github.com/mistralai/mistral-inference
cd $HOME/mistral-inference && poetry install .
# 創建模型儲存目錄
export MISTRAL_MODEL=$HOME/mistral_models
mkdir -p $MISTRAL_MODEL
# 下載模型(以Mistral Nemo為例)
export 12B_DIR=$MISTRAL_MODEL/12B_Nemo
wget https://models.mistralcdn.com/mistral-nemo-2407/mistral-nemo-instruct-2407.tar
mkdir -p $12B_DIR
tar -xf mistral-nemo-instruct-2407.tar -C $12B_DIR
# 單GPU模型
mistral-chat $12B_DIR --instruct --max_tokens 1024 --temperature 0.35
# 多GPU大模型
torchrun --nproc-per-node 2 --no-python mistral-chat $M8x7B_DIR --instruct
mistral-chat $M22B_CODESTRAL --instruct --max_tokens 256
可以處理如"Write me a function that computes fibonacci in Rust"這樣的程式設計請求。
mistral-chat $7B_MATHSTRAL --instruct --max_tokens 256
能夠解決複雜的數學計算問題。
在商業環境中使用時,請仔細檢查相應模型的許可證條款,確保合規使用。
Mistral 推理庫是一個功能強大、易於使用的大語言模型推理框架。它不僅提供了完整的 Mistral 模型系列支援,還包含了豐富的功能特性,從基礎的文字生成到高級的多模態推理和函數呼叫。無論是企業級部署還是個人研究使用,這個庫都能提供高效、可靠的解決方案。