Uploaded model

  • Developed by: tats-toyoda
  • 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.

How to use

以下はこのモデルを用いて elyza-tasks-100-TV_0.jsonl に回答するためのコードです。

推論用コード

本コードは学習した QLoRA のアダプタを用いて ELYZA-tasks-100-TV の出力を得るためのコードです。 このコードは unsloth ライブラリを用いてモデルを読み込み、推論するためのコードとなります。 このコードで生成された jsonl ファイルは課題の成果として提出可能なフォーマットになっております。

注意: 本コードは Google Colab での動作を前提としています。

  1. 必要なライブラリをインストールする。
%%capture
!pip install unsloth
!pip uninstall unsloth -y && pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
!pip install -U torch
!pip install -U peft
  1. 必要なライブラリを読み込む。
import json
import re

import torch
from peft import PeftModel
from tqdm import tqdm
from unsloth import FastLanguageModel
  1. ベースのモデル (llm-jp/llm-jp-3-13b) と学習した LoRA のアダプタ (Hugging Face の ID) をそれぞれ指定する。
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = ""
  1. Hugging Face より Write 権限が付与された Access Token を取得し、下記の HF_TOKEN で使用する。
HF_TOKEN = "your Token" #@param {type:"string"}
  1. ベースのモデルを用いて FastLanguageModel インスタンスを作成する。
dtype = None # Noneにしておけば自動で設定
load_in_4bit = True # 今回は13Bモデルを扱うためTrue
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name=model_id,
    dtype=dtype,
    load_in_4bit=load_in_4bit,
    trust_remote_code=True,
)
  1. 元のモデル model に LoRA のアダプタを統合する。
model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN))
  1. タスクとなるデータ ELYZA-tasks-100-TV を読み込む。
    • 事前に Google Colab 上に elyza-tasks-100-TV_0.jsonl をアップロードすること。
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 = ""
  1. 学習済みモデルを用いてタスクを推論する。
FastLanguageModel.for_inference(model)
results = []
for dt in tqdm(datasets):
    input = dt["input"]
    prompt = f"""### 指示\n{input}\n### 回答\n"""
    inputs = tokenizer([prompt], return_tensors = "pt").to(model.device)
    outputs = model.generate(**inputs, max_new_tokens = 512, use_cache = True, do_sample=False, repetition_penalty=1.2)
    prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]
    results.append({"task_id": dt["task_id"], "input": input, "output": prediction})
  1. 結果を jsonl 形式で保存する。
json_file_id = re.sub(".*/", "", adapter_id)
with open(f"/content/{json_file_id}_output.jsonl", 'w', encoding='utf-8') as f:
    for result in results:
        json.dump(result, f, ensure_ascii=False) f.write('\n')
Downloads last month

-

Downloads are not tracked for this model. How to track
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 tats-toyoda/llm-jp-3-13b-it_lora

Finetuned
(1121)
this model