🚀 エラスティックモデル: Mistral-7B-Instruct-v0.3
TheStage AI ANNAによって生成された、最速かつ最も柔軟なセルフサービング用モデルです。ANNAを使用すると、簡単な操作でモデルのサイズ、レイテンシ、品質を制御できます。
✨ 主な機能
- 推論時のコストと品質の選択に柔軟性を提供します。
- 明確な品質とレイテンシのベンチマークを提供します。
- 1行のコードでHFライブラリ(transformersとdiffusers)のインターフェースを提供します。
- 広範なハードウェアでサポートされる事前コンパイル済みのモデルを提供し、JITが不要です。
- セルフホスティングに最適なモデルとサービスを提供します。
⚠️ 重要提示
具体的な品質低下率はモデルによって異なります。たとえば、Sモデルでも0.5%の低下率になることがあります。

📦 インストール
まず、transformers
のインポートを elastic_models.transformers
に置き換えます。
import torch
from transformers import AutoTokenizer
from elastic_models.transformers import AutoModelForCausalLM
model_name = "mistralai/Mistral-7B-Instruct-v0.3"
hf_token = ''
device = torch.device("cuda")
tokenizer = AutoTokenizer.from_pretrained(
model_name, token=hf_token
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
token=hf_token,
torch_dtype=torch.bfloat16,
attn_implementation="sdpa",
mode='S'
).to(device)
model.generation_config.pad_token_id = tokenizer.eos_token_id
次に、ターミナルで以下のコマンドを実行して必要なライブラリをインストールします。
pip install thestage
pip install elastic_models[nvidia]\
--index-url https://thestage.jfrog.io/artifactory/api/pypi/pypi-thestage-ai-production/simple\
--extra-index-url https://pypi.nvidia.com\
--extra-index-url https://pypi.org/simple
pip install flash_attn==2.7.3 --no-build-isolation
pip uninstall apex
その後、app.thestage.aiにログインし、プロファイルページからAPIトークンを生成します。以下のコマンドでAPIトークンを設定します。
thestage config set --api-token <YOUR_API_TOKEN>
これで、高速化されたモデルを使用できます!
💻 使用例
基本的な使用法
prompt = "Describe basics of DNNs quantization."
messages = [
{
"role": "system",
"content": "You are a search bot, answer on user text queries."
},
{
"role": "user",
"content": prompt
}
]
chat_prompt = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=False
)
inputs = tokenizer(chat_prompt, return_tensors="pt")
inputs.to(device)
with torch.inference_mode():
generate_ids = model.generate(**inputs, max_length=500)
input_len = inputs['input_ids'].shape[1]
generate_ids = generate_ids[:, input_len:]
output = tokenizer.batch_decode(
generate_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False
)[0]
print(f"# Q:\n{prompt}\n")
print(f"# A:\n{output}\n")
📚 ドキュメント
ベンチマーク
モデルの高速化において、ベンチマークテストは最も重要な手順の1つです。私たちは、独自のアルゴリズムを使用したモデルに対して明確なパフォーマンス指標を提供することを目指しています。W8A8, int8
列は、すべての線形レイヤーにW8A8量子化を適用し、ANNAと同じキャリブレーションデータを使用したことを示しています。Sモデルは、ほぼ同じ速度を達成しながら、はるかに高い品質を実現します。なぜなら、ANNAは敏感なレイヤーでの量子化品質を向上させる方法を知っているからです!
品質ベンチマーク
メトリック/モデル |
S |
M |
L |
XL |
オリジナル |
W8A8, int8 |
MMLU |
59.7 |
60.1 |
60.8 |
61.4 |
61.4 |
28 |
PIQA |
80.8 |
82 |
81.7 |
81.5 |
81.5 |
65.3 |
Arc Challenge |
56.6 |
55.1 |
56.8 |
57.4 |
57.4 |
33.2 |
Winogrande |
73.2 |
72.3 |
73.2 |
74.1 |
74.1 |
57 |
- MMLU: 科学、人文、工学など57の分野にわたる一般知識を評価します。モデルが多様な学術的トピックを扱う能力を示します。
- PIQA: 日常の物理的相互作用に関する質問を通じて、物理的な常識的推論を評価します。モデルが現実世界の物理概念を理解する能力を示します。
- Arc Challenge: 小学校レベルの推論を必要とする選択問題を評価します。モデルが複雑な推論タスクを解く能力を示します。
- Winogrande: 文章の完成タスクを通じて、常識的推論を評価します。モデルが文脈を理解し、曖昧さを解消する能力を示します。
レイテンシベンチマーク
100入力/300出力; tok/s:
GPU/モデル |
S |
M |
L |
XL |
オリジナル |
W8A8, int8 |
H100 |
186 |
180 |
168 |
136 |
48 |
192 |
L40s |
79 |
68 |
59 |
47 |
38 |
82 |
🔗 リンク
📄 ライセンス
このプロジェクトはApache-2.0ライセンスの下で提供されています。