Uploaded model
- Developed by: v284v
- License: apache-2.0
- Finetuned from model : llm-jp/llm-jp-3-13b
This llama model was trained 2x faster with Unsloth and Huggingface's TRL library.
## モデル概要
このモデルは、`llm-jp/llm-jp-3-13b`をベースとした大規模言語モデル(LLM)を、特定のタスク向けにファインチューニングしたものです。
LoRA(Low-Rank Adaptation)の手法を用いて、計算資源を抑えつつ、タスクに特化した性能向上を目指しました。
本モデルは、ELYZA-tasks-100-TVデータセットにおけるタスクを解決するように学習されています。
## モデルの使用方法
### 1. 環境構築
まず、必要なライブラリをインストールします。
```bash
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
!pip install -U peft
!pip install ipywidgets --upgrade
2. 推論コード
以下のコードは、Hugging Faceにアップロードされたモデルを用いて、ELYZA-tasks-100-TVデータセットのタスクに対する出力を生成します。
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
from peft import PeftModel
import torch
from tqdm import tqdm
import json
# Hugging Face Token
HF_TOKEN = "your_token" # Hugging Faceで取得したTokenをこちらに貼る。
# モデルIDとLoRAアダプタID
base_model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "v284v/llm-jp-3-13b-temp" # こちらにアップロードしたHugging FaceのIDを指定してください。
# QLoRA config
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# モデルとトークナイザーのロード
model = AutoModelForCausalLM.from_pretrained(
base_model_id,
quantization_config=bnb_config,
device_map="auto",
token = HF_TOKEN
)
tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True, token = HF_TOKEN)
# LoRAアダプタの統合
model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)
# データセットの読み込み
datasets = []
with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
item = ""
for line in f:
line = line.strip()
item += line
if item.endswith("}"):
datasets.append(json.loads(item))
item = ""
results = []
for data in tqdm(datasets):
input = data["input"]
prompt = f"""### 指示
{input}
### 回答
"""
tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
attention_mask = torch.ones_like(tokenized_input)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
attention_mask=attention_mask,
max_new_tokens=100,
do_sample=False,
repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id
)[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
results.append({"task_id": data["task_id"], "input": input, "output": output})
# jsonlファイルに結果を書き出す
import re
jsonl_id = re.sub(".*/", "", adapter_id)
with open(f"./{jsonl_id}-outputs.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False)
f.write('\n')
3. 提出ファイルの形式
上記のコードを実行すると、llm-jp-3-13b-temp-output.jsonl
という形式のファイルが生成されます。このファイルが提出ファイルとなります。
各行はJSON形式で、以下のキーを含むオブジェクトで構成されます。
task_id
: タスクIDinput
: 入力されたプロンプトoutput
: モデルによって生成された出力
{"task_id": "0", "input": "与えられた文章を要約してください。文章: 今日は天気が良く、公園でピクニックをしました。", "output": "今日は天気が良く、公園でピクニックをした。"}
{"task_id": "1", "input": "次の文章を英語に翻訳してください。文章: こんにちは", "output": "Hello."}
...
注意点
your_token
の部分は、ご自身のHugging Faceトークンに置き換えてください。./elyza-tasks-100-TV_0.jsonl
は、タスクの入力データを含むファイルです。実際のファイルパスに合わせて変更してください。
Inference Providers
NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API:
The model has no pipeline_tag.
Model tree for v284v/llm-jp-3-13b-temp
Base model
llm-jp/llm-jp-3-13b