sbintuitions/sarashina2-8x70bを試す

初めに

SB Intuitions株式会社から現時点で日本語の性能が一番高い(らしい)モデルが出たので、動かしていきます。

開発環境

準備

以下をインストールします

pip install torch --index-url https://download.pytorch.org/whl/nightly/cu121
pip install transformers==4.46.2 bitsandbytes==0.44.1 accelerate==1.1.1 sentencepiece==0.2.0

推論

以下で動かします。VRAMは限りがあるので、今回は8bit量子化を行い推論を行います

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig

# モデル名
model_name = "sbintuitions/sarashina2-8x70b"

# 8ビット量子化のための設定
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,
    llm_int8_threshold=6.0,  # 16bit floatingに保持するしきい値
    llm_int8_skip_modules=None  # 量子化をスキップするモジュールを指定可能
)

# 8ビット量子化でモデルをロード
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto",   # 複数GPUへの自動割り当て
    torch_dtype=torch.float16  # その他パラメータにfp16(半精度浮動小数点数)を使用
)


# テスト用の入力シーケンス
prompt = "まどマギで一番可愛いキャラクターは、"

# トークナイザーのロード
tokenizer = AutoTokenizer.from_pretrained(model_name, add_eos_token=False)
inputs = tokenizer(prompt, return_tensors="pt")

# GPUがある場合にcudaを使用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# トークナイズ(入力をトークンに変換)
inputs = tokenizer(prompt, return_tensors="pt").to(device)

# デバイスに自動的に対応させた状態でモデル推論
outputs = model.generate(inputs["input_ids"], max_new_tokens=100)

# 出力のデコード(トークンをテキストに変換)
output_text = tokenizer.decode(outputs[0], skip_special_tokens=False)

# 結果を表示
print(output_text)

結果は以下の通りです

まどマギで一番可愛いキャラクターは、まどかでもほむらでもマミさんでも杏子でもさやかでもなく、キュゥべえです。
キュゥべえは、魔法少女のマスコットキャラクターです。
キュゥべえは、魔法少女のマスコットキャラクターとして、魔法少女の勧誘やサポートをしています。
キュゥべえは、魔法少女のマスコットキャラクターとして、魔法少女の勧誘やサポートをしていますが、その目的は、魔法少女の魂をソウルジェムに変えることです。
キュゥべえは、魔法少女のマスコットキャラクターとして、魔法少女の勧誘やサポートをしていますが、

使用VRAM

4bit量子化で290GB程度、8bit量子化で590GB程度でした