Instructions to use Enumaelish1004/gemma2-9b-sft-lora-v3.3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Enumaelish1004/gemma2-9b-sft-lora-v3.3 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("question-answering", model="Enumaelish1004/gemma2-9b-sft-lora-v3.3")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Enumaelish1004/gemma2-9b-sft-lora-v3.3", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Unsloth Desktop
モデルの推論方法
以下にモデルの推論方法を記します.なお,ElYZA-tasks-100-tvの推論はunslothを使用すると,T4で24分で完了することを確認しています.
パッケージのインストール
# 必要なパッケージのインストール
%%capture
!pip install datasets
!pip install bitsandbytes triton
!pip install unsloth-zoo==2024.12.1
!pip install -q --upgrade --no-cache-dir "unsloth[2024.11.9] @ git+https://github.com/niryuu/unsloth.git@use-exact-model-name"
!pip install --upgrade torch
!pip install --upgrade xformers
huggingfaceトークンのアクセス
Google gemma2のアクセスが可能になっていないとエラーが出る.(google/gemma-2-9bのモデルカードにいき,承諾すれば使える)
# Huggingfaceのログイン
#colabでsecret keyに登録している場合は不要
from huggingface_hub import notebook_login
notebook_login()
パッケージのimport
from transformers import AutoTokenizer, AutoModelForCausalLM,BitsAndBytesConfig
import bitsandbytes as bnb
from unsloth import FastLanguageModel
import torch
from peft import peft_model
from peft import
import pandas as pd
import json
from datasets import Dataset
import time
パラメータおよび量子化の設定
max_seq_length = 512 # unslothではRoPEをサポートしているのでコンテキスト長は自由に設定可能
model_id="google/gemma-2-9b" #ベースモデル
dtype = None # Noneにしておけば自動で設定
adapter_id="Enumaelish1004/gemma2-9b-sft-lora-v3.3"
# 量子化のConfigを設定
quantization_config = BitsAndBytesConfig(
load_in_4bit=True, # 4ビット量子化を使用
bnb_4bit_quant_type="nf4", # 4ビット量子化の種類にnf4(NormalFloat4)を使用
bnb_4bit_use_double_quant=True, # 二重量子化を使用
bnb_4bit_compute_dtype=torch.bfloat16 # 量子化のデータ型をfloat16に設定
)
ベースモデルおよびトークナイザーのロード
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_id,
dtype=dtype,
quantization_config=quantization_config,
attn_implementation="eager",#gemma2では"eager"が推奨されている
trust_remote_code=True,
use_exact_model_name=True#unsoth独自のgemmaモデルをダウンロードしないためのオプション
)
アダプターをベースモデルに接続
model = peft_model.PeftModel.from_pretrained(model, adapter_id)
FastLanguageModel.for_inference(model)#推論モード
データセットのロード
df = pd.read_json('./elyza-tasks-100-TV_0.jsonl', orient='records', lines=True)#データセットのjsolファイルのパスを入力
compe_data=Dataset.from_pandas(df)
compe_data=compe_data.map(lambda example:{"output":""})
チャットテンプレート
gemma2は特殊なテンプレートを使うらしいので,alpacaテンプレートをgemma2用に変更している.
template_chat=""" <start_of_turn>user
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
{}<end_of_turn>
<start_of_turn>model
"""
推論
results_list={"task_id":[],"input":[],"output":[]}
start = time.perf_counter() #計測開始
for i,data in enumerate(compe_data):
print("==========={}/{}===========".format(i,len(compe_data)))
input_text=data["input"]
output_text=data["output"]
print(f"Q. {input_text}")
model_inputs=template_chat.format(input_text)
model_inputs = tokenizer(model_inputs, return_tensors="pt").to(model.device)
pred = model.generate(**model_inputs, max_new_tokens=max_seq_length, use_cache=True,repetition_penalty=1.2,do_sample=False,temperature=1.0)
pred=tokenizer.decode(pred[0][model_inputs.input_ids.size(1):], skip_special_tokens=True)
pred=pred.replace("<end_of_turn>","")
print(f"A. {pred}")
results_list["task_id"].append(data["task_id"])
results_list["input"].append(input_text)
results_list["output"].append(pred)
end = time.perf_counter() #計測終了
print("推論時間:{:.2f}".format((end-start)/60))
results=pd.DataFrame(results_list)#結果をpandasに変更
# 結果の保存
results.to_json("./gemma2-9b-sft-v3_3_elyzaTV.jsonl", orient='records', force_ascii=False, lines=True)#任意の保存先のパスを入力
使用したデータセット
ライセンス問題のため,学習に使用したデータセットを記述します.もし問題があればお知らせください.
GENIAC-Team-Ozaki/Hachi-Alpaca_newans license: cc-by-4.0
HachiML/alpaca_jp_math license: apache-2.0
weblab-GENIAC/aya-ja-nemotron-dpo-masked license: apache-2.0
kanhatakeyama/multiturn-conv-from-aozora-bunko license: apache-2.0
Model tree for Enumaelish1004/gemma2-9b-sft-lora-v3.3
Base model
google/gemma-2-9b