Configuration Parsing
Warning:
In config.json: "quantization_config.bits" must be an integer
Llama-Gemma-2-27b-ORPO-iter3-5.8bpw
概要
Aratako/Llama-Gemma-2-27b-ORPO-iter3をExLlamaV2を使って5.8 bpwに量子化したモデルです。
松尾研大規模言語モデル講座2024のコンペ用の提出モデル作成の一環として作成・公開しています。
This model is built with Llama and Qwen.
学習データ等の詳細については元モデルの概要をご確認ください。
推論方法
松尾研大規模言語モデル講座2024のコンペのタスクの推論方法を以下に記載します。
- 以下のようにして推論の環境を準備します。
git clone https://github.com/turboderp/exllamav2
cd exllamav2
pip install -r requirements.txt
# PyTorchやCUDA、Pythonのバージョンを合わせてExLlamaV2をインストール
# ここではCUDA 12.2、PyTorch 2.5.1、Python 3.10の環境が初期状態だと仮定する
pip install https://github.com/turboderp/exllamav2/releases/download/v0.2.5/exllamav2-0.2.5+cu121.torch2.5.0-cp310-cp310-linux_x86_64.whl
pip install torch==2.5.0
pip install -U --no-build-isolation flash-attn
# モデルの用意
huggingface-cli download Aratako/Llama-Gemma-2-27b-ORPO-iter3-5.8bpw --local-dir ./Llama-Gemma-2-27b-ORPO-iter3-5.8bpw
- 以下のようなPythonファイルをelyza_tasks_100_tv_exllamav2.pyとして作成します。また、elyza-tasks-100-TV_0.jsonlを同じディレクトリに配置します。
elyza_tasks_100_tv_exllamav2.py
import argparse
import json
from transformers import AutoTokenizer
from exllamav2 import ExLlamaV2, ExLlamaV2Config, ExLlamaV2Cache_Q8, ExLlamaV2Tokenizer
from exllamav2.generator import ExLlamaV2DynamicGenerator, ExLlamaV2Sampler
from datasets import load_dataset
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--model", help="評価するモデル", required=True)
parser.add_argument("-t", "--tokenizer", help="使用するトークナイザ")
parser.add_argument("-o", "--output", help="出力jsonlファイルの名前")
args = parser.parse_args()
if args.tokenizer is None:
args.tokenizer = args.model
if args.output is None:
args.output = f"answers-{args.model.split('/')[-1]}.jsonl"
ds = load_dataset("json", data_files="./elyza-tasks-100-TV_0.jsonl", split="train")
hf_tokenizer = AutoTokenizer.from_pretrained(args.model)
# ExLlamaV2の設定
config = ExLlamaV2Config(args.model)
config.arch_compat_overrides()
model = ExLlamaV2(config)
cache = ExLlamaV2Cache_Q8(model, max_seq_len=2304, lazy=True)
model.load_autosplit(cache, progress=True)
tokenizer = ExLlamaV2Tokenizer(config)
generator = ExLlamaV2DynamicGenerator(
model=model,
cache=cache,
tokenizer=tokenizer,
)
# 推論パラメータ
gen_settings = ExLlamaV2Sampler.Settings.greedy()
# 入力が768tokenを超える場合エラーになるはずなのでその場合はここを256ずつ減らしてください。
max_tokens = 1536
def apply_chat_template(item):
messages = [
{"role": "user", "content": item["input"]}
]
item["prompt"] = hf_tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
return item
ds = ds.map(apply_chat_template, batched=False)
def generate_answer(batch):
outputs = generator.generate(
prompt=batch["prompt"],
max_new_tokens=max_tokens,
stop_conditions=[tokenizer.eos_token_id],
gen_settings=gen_settings,
encode_special_tokens=True,
)
# 入力部分も含めて返ってくるので出力部分だけを取り出す
outputs = [text.split("<start_of_turn>model\n", 1)[-1] for text in outputs]
print(outputs)
batch["output"] = outputs
return batch
ds = ds.map(generate_answer, batched=True, batch_size=10)
ds = ds.remove_columns("prompt")
with open(args.output, "w", encoding="utf-8") as f:
for row in ds:
json.dump(row, f, ensure_ascii=False)
f.write("\n")
- 以下のように推論を実行します。推論が完了するとデフォルトではanswers-Llama-Gemma-2-27b-ORPO-iter3-5.8bpw.jsonlに回答が保存されます。
python elyza_tasks_100_tv_exllamav2.py -m Llama-Gemma-2-27b-ORPO-iter3-5.8bpw
ライセンス
本モデルは学習に利用したデータの関係で以下のライセンスの影響を受けます。
- META LLAMA 3.1 COMMUNITY LICENSEを継承します。
- Gemma Terms of Useを継承します。
- Qwen LICENSE AGREEMENTの影響を受けます。ライセンスは継承しませんが、「Built with Qwen」のような文言を記載する必要があります。
- Downloads last month
- 25
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social
visibility and check back later, or deploy to Inference Endpoints (dedicated)
instead.
Model tree for Aratako/Llama-Gemma-2-27b-ORPO-iter3-5.8bpw
Base model
google/gemma-2-27b
Finetuned
Aratako/Llama-Gemma-2-27b-SFT-trial1
Finetuned
Aratako/Llama-Gemma-2-27b-ORPO-iter3