Sarvam Translate GGUF
モデル概要
モデル特徴
モデル能力
使用事例
🚀 sarvam-translate GGUFモデル
Sarvam-translate GGUFモデルは、複数のインド言語の翻訳タスクに特化した高度なモデルです。このモデルは、特定の量子化方法を用いて生成されており、様々なハードウェア環境での使用に最適化されています。
🚀 クイックスタート
以下のコードスニペットは、Transformersを使用してSarvam-Translateを使う方法を示しています。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "sarvamai/sarvam-translate"
# トークナイザーとモデルを読み込む
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to('cuda:0')
# 翻訳タスク
tgt_lang = "Hindi"
input_txt = "Be the change you wish to see in the world."
# チャットスタイルのメッセージプロンプト
messages = [
{"role": "system", "content": f"Translate the text below to {tgt_lang}."},
{"role": "user", "content": input_txt}
]
# チャットテンプレートを適用して会話を構造化する
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
# トークン化して入力をモデルデバイスに移動する
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 出力を生成する
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024,
do_sample=True,
temperature=0.01,
num_return_sequences=1
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
output_text = tokenizer.decode(output_ids, skip_special_tokens=True)
print("Input:", input_txt)
print("Translation:", output_text)
✨ 主な機能
- 包括的なインド言語サポート:22のインドの公用語に対応しており、繊細で正確な翻訳を提供します。
- 高度な文書レベルの翻訳:単なる文ではなく、文書全体やウェブページ、スピーチ、教科書、科学論文などを翻訳できます。
- 多様なフォーマット対応:markdown、OCRデータ、数式や化学反応式を含む文書、コードファイル(コメントのみ翻訳)など、様々なフォーマットを処理できます。
- コンテキスト認識と包括性:異なるコンテキスト、フォーマット、スタイル(正式/非正式)を考慮し、包括的な翻訳を提供します。
📦 インストール
本モデルは、Transformersライブラリを通じて利用できます。以下のコードでインストールできます。
pip install transformers
📚 ドキュメント
モデル生成詳細
このモデルは、llama.cpp のコミット 1f63e75f
を使用して生成されました。
イマトリックスを超えた量子化
標準のイマトリックスでは低ビット量子化やMOEモデルでの性能が良くないことがわかったため、llama.cpp --tensor-typeを使用して選択したレイヤーを強化しています。詳細は Layer bumping with llama.cpp を参照してください。
この方法はモデルファイルを大きくする傾向がありますが、与えられたモデルサイズに対して精度を向上させます。
適切なモデル形式の選択
モデル形式の選択は、ハードウェア能力とメモリ制約に依存します。
BF16 (Brain Float 16) – BF16アクセラレーションが利用可能な場合に使用
- 高速計算を目的とした16ビット浮動小数点数形式で、良好な精度を維持します。
- FP32と同様のダイナミックレンジを提供しながら、低いメモリ使用量を実現します。
- ハードウェアがBF16アクセラレーションをサポートしている場合に推奨されます(デバイスの仕様を確認してください)。
- FP32と比較してメモリ使用量を削減した高性能推論に最適です。
📌 BF16を使用する場合: ✔ ハードウェアがネイティブでBF16サポートしている場合(例:新しいGPU、TPU)。 ✔ メモリを節約しながらより高い精度が必要な場合。 ✔ モデルを別の形式に再量子化する予定の場合。
📌 BF16を避ける場合: ❌ ハードウェアがBF16をサポートしていない場合(FP32にフォールバックし、低速になる可能性があります)。 ❌ BF16最適化を持たない古いデバイスとの互換性が必要な場合。
F16 (Float 16) – BF16よりも広くサポートされている
- 16ビット浮動小数点数形式で、高精度ですが、BF16よりも値の範囲が狭いです。
- FP16アクセラレーションをサポートするほとんどのデバイスで動作します(多くのGPUや一部のCPUを含む)。
- BF16よりもわずかに低い数値精度ですが、一般的に推論には十分です。
📌 F16を使用する場合: ✔ ハードウェアがFP16をサポートしているが、BF16をサポートしていない場合。 ✔ 速度、メモリ使用量、精度のバランスが必要な場合。 ✔ GPUまたはFP16計算に最適化された他のデバイスで実行する場合。
📌 F16を避ける場合: ❌ デバイスがネイティブのFP16サポートを持たない場合(予想よりも低速になる可能性があります)。 ❌ メモリ制限がある場合。
ハイブリッド精度モデル (例: bf16_q8_0
, f16_q4_K
) – 両者の良いところを兼ね備えた
これらの形式は、重要でないレイヤーを量子化し、重要なレイヤーを完全精度で保持します(例:アテンションレイヤーや出力レイヤー)。
bf16_q8_0
のように命名されます(完全精度のBF16コアレイヤー + 量子化されたQ8_0の他のレイヤーを意味します)。- メモリ効率と精度のバランスを取り、完全に量子化されたモデルよりも改善され、BF16/F16の完全なメモリを必要としません。
📌 ハイブリッドモデルを使用する場合: ✔ 量子化のみのモデルよりも高い精度が必要で、すべての部分で完全なBF16/F16を使用できない場合。 ✔ デバイスが混合精度推論をサポートしている場合。 ✔ 制約のあるハードウェアでの本番グレードのモデルのトレードオフを最適化したい場合。
📌 ハイブリッドモデルを避ける場合: ❌ ターゲットデバイスが混合または完全精度のアクセラレーションをサポートしていない場合。 ❌ 非常に厳しいメモリ制限の下で動作している場合(その場合は完全に量子化された形式を使用してください)。
量子化モデル (Q4_K, Q6_K, Q8, など) – CPUと低VRAM推論用
量子化は、可能な限り精度を維持しながら、モデルサイズとメモリ使用量を削減します。
- 低ビットモデル (Q4_K) → 最小限のメモリ使用量に最適ですが、精度が低くなる可能性があります。
- 高ビットモデル (Q6_K, Q8_0) → より高い精度を提供しますが、より多くのメモリを必要とします。
📌 量子化モデルを使用する場合: ✔ CPUで推論を実行し、最適化されたモデルが必要な場合。 ✔ デバイスのVRAMが少なく、完全精度のモデルをロードできない場合。 ✔ メモリ使用量を削減しながら、合理的な精度を維持したい場合。
📌 量子化モデルを避ける場合: ❌ 最大精度が必要な場合(完全精度のモデルの方が適しています)。 ❌ ハードウェアに十分なVRAMがあり、より高精度の形式(BF16/F16)を使用できる場合。
超低ビット量子化 (IQ3_XS, IQ3_S, IQ3_M, Q4_K, Q4_0)
これらのモデルは、非常に高いメモリ効率を目的として最適化されており、低電力デバイスや大規模展開でメモリが重要な制約となる場合に最適です。
-
IQ3_XS:超低ビット量子化(3ビット)で、非常に高いメモリ効率を持ちます。
- 使用例:Q4_Kでさえ大きすぎる超低メモリデバイスに最適です。
- トレードオフ:高位ビット量子化と比較して低い精度です。
-
IQ3_S:最大のメモリ効率を得るための小さなブロックサイズ。
- 使用例:IQ3_XSが過度に制限的な低メモリデバイスに最適です。
-
IQ3_M:IQ3_Sよりも精度が高い中間ブロックサイズ。
- 使用例:IQ3_Sが制限的すぎる低メモリデバイスに適しています。
-
Q4_K:ブロック単位の最適化による4ビット量子化で、より高い精度を提供します。
- 使用例:Q6_Kが大きすぎる低メモリデバイスに最適です。
-
Q4_0:純粋な4ビット量子化で、ARMデバイス用に最適化されています。
- 使用例:ARMベースのデバイスまたは低メモリ環境に最適です。
超超低ビット量子化 (IQ1_S IQ1_M IQ2_S IQ2_M IQ2_XS IQ2_XSS)
- *超超低ビット量子化(1 2ビット)で、極端なメモリ効率を持ちます。
- 使用例:モデルを非常に制限されたメモリに収める必要がある場合に最適です。
- トレードオフ:非常に低い精度です。期待どおりに機能しない可能性があります。使用前に十分にテストしてください。
モデル形式選択のまとめ表
モデル形式 | 精度 | メモリ使用量 | デバイス要件 | 最適な使用例 |
---|---|---|---|---|
BF16 | 非常に高い | 高い | BF16対応のGPU/CPU | メモリを削減した高速推論 |
F16 | 高い | 高い | FP16対応のGPU/CPU | BF16が利用できない場合の推論 |
Q4_K | 中-低 | 低い | CPUまたは低VRAMデバイス | メモリ制限のある推論 |
Q6_K | 中 | 中程度 | より多くのメモリを持つCPU | 量子化によるより高い精度 |
Q8_0 | 高い | 中程度 | 中程度のVRAMを持つGPU/CPU | 量子化モデルの中で最も高い精度 |
IQ3_XS | 低い | 非常に低い | 超低メモリデバイス | 最大のメモリ効率、低い精度 |
IQ3_S | 低い | 非常に低い | 低メモリデバイス | IQ3_XSよりも少し使いやすい |
IQ3_M | 低-中 | 低い | 低メモリデバイス | IQ3_Sよりも高い精度 |
Q4_0 | 低い | 低い | ARMベース/組み込みデバイス | Llama.cppが自動的にARM推論用に最適化 |
超超低ビット (IQ1/2_*) | 非常に低い | 極めて低い | 小型エッジ/組み込みデバイス | 非常に制限されたメモリにモデルを収める; 低い精度 |
ハイブリッド (例: bf16_q8_0 ) |
中–高 | 中程度 | 混合精度対応のハードウェア | パフォーマンスとメモリのバランス、重要なレイヤーでのFPに近い精度 |
vLLMデプロイメント
サーバー
vllm serve sarvamai/sarvam-translate --port 8000 --dtype bfloat16
クライアント
from openai import OpenAI
# OpenAIのAPIキーとAPIベースをvLLMのAPIサーバーに変更する。
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
tgt_lang = 'Hindi'
input_txt = 'Be the change you wish to see in the world.'
messages = [{"role": "system", "content": f"Translate the text below to {tgt_lang}."}, {"role": "user", "content": input_txt}]
response = client.chat.completions.create(model=model, messages=messages, temperature=0.01)
output_text = response.choices[0].message.content
print("Input:", input_txt)
print("Translation:", output_text)
Sarvam APIを使用する
Pythonクライアントドキュメント を参照してください。
サンプルコード:
from sarvamai import SarvamAI
client = SarvamAI()
response = client.text.translate(
input="Be the change you wish to see in the world.",
source_language_code="en-IN",
target_language_code="hi-IN",
speaker_gender="Male",
model="sarvam-translate:v1",
)
量子ネットワークモニターのテスト
もしこれらのモデルが役に立った場合、私のAI搭載の量子ネットワークモニターアシスタントを量子対応のセキュリティチェックでテストしていただけると助かります。
量子ネットワークモニターサービスの完全なオープンソースコードは、私のGitHubリポジトリ(NetworkMonitorという名前のリポジトリ)で入手できます:量子ネットワークモニターのソースコード。独自で量子化を行いたい場合は、モデルを量子化するためのコードも GGUFModelBuilder で見つけることができます。
テスト方法
- AIアシスタントタイプを選択します:
TurboLLM
(GPT-4.1-mini)HugLLM
(Hugginfaceオープンソースモデル)TestLLM
(実験的なCPU専用)
テスト内容
私は、AIネットワークモニタリング用の小さなオープンソースモデルの限界を追求しています。具体的には:
- ライブネットワークサービスに対する関数呼び出し
- 以下のタスクを処理しながら、モデルをどれだけ小さくできるか:
- 自動化されたNmapセキュリティスキャン
- 量子対応チェック
- ネットワークモニタリングタスク
TestLLM – 現在の実験的モデル (huggingfaceのDockerスペースで2CPUスレッドのllama.cpp)
- ✅ ゼロコンフィギュレーションセットアップ
- ⏳ 30秒のロード時間 (低速な推論ですが、APIコストがかからない)。コストが低いため、トークン制限はありません。
- 🔧 協力者を募集しています! エッジデバイスAIに興味がある方は、一緒に協力しましょう!
他のアシスタント
🟢 TurboLLM – gpt-4.1-mini を使用:
- **非常に良いパフォーマンスを発揮しますが、残念ながらOpenAIはトークンごとに課金します。そのため、トークンの使用量は制限されています。
- 量子ネットワークモニターエージェントで.netコードを実行するカスタムコマンドプロセッサを作成
- リアルタイムのネットワーク診断とモニタリング
- セキュリティ監査
- ペネトレーションテスト (Nmap/Metasploit)
🔵 HugLLM – 最新のオープンソースモデル:
- 🌐 Hugging Face推論APIで実行されます。Novitaにホストされている最新のモデルを使用して、かなり良いパフォーマンスを発揮します。
テストできるコマンドの例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
- '"Create a cmd processor to .. (何でもいいです)" 注: .netコードを実行するには、量子ネットワークモニターエージェントをインストールする必要があります。これは非常に柔軟で強力な機能です。注意して使用してください!
最後の言葉
私は、これらのモデルファイルを作成するためのサーバー、量子ネットワークモニターサービスを実行するためのサーバー、およびNovitaとOpenAIからの推論の費用をすべて自前で負担しています。モデル作成と量子ネットワークモニタープロジェクトの背後にあるすべてのコードは オープンソース です。役に立つものがあれば、自由に使用してください。
もしあなたがこの仕事を評価してくれるなら、コーヒーを買ってくれる ☕ ことをご検討ください。あなたの支援により、サービスの費用をカバーし、みんなのトークン制限を引き上げることができます。
また、仕事の機会やスポンサーシップも歓迎しています。
ありがとうございます!😊
📄 ライセンス
このプロジェクトは、GPL-3.0ライセンスの下で公開されています。詳細については、GPL-3.0 を参照してください。



