Uploaded model

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

概要

このドキュメントでは、Hugging Face で公開されているモデル llm-jp/llm-jp-3-13b を使用して、与えられた入力データ ( elyza-tasks-100-TV_0.jsonl ) を推論し、その結果をファイルに出力する手順を説明します。

準備

  1. 実行環境: Python が利用できる環境 (例: Google Colab、AWS SageMakerなど) を用意してください。
  2. Hugging Face トークン: Hugging Face のアクセストークン ( HF_TOKEN ) を取得してください。

セットアップ

以下の手順で、必要なライブラリのインストールと、Hugging Face トークンの設定を行います。

1. ライブラリのインストール

!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 トークンの設定

環境に合わせてトークンを設定します。Google Colab の例を以下に示します。

from google.colab import userdata
HF_TOKEN = userdata.get('HF_TOKEN')

モデルとトークナイザの読み込み

以下のコードを実行して、Hugging Face からモデルとトークナイザを読み込みます。

ここでは、効率的な推論のために量子化 (QLoRA) を適用しています。

import torch
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
)
import json
from tqdm import tqdm
import re

# モデルIDを設定
model_id = "llm-jp/llm-jp-3-13b"

# QLoRA用の設定
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

# モデルのロード
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map="auto",
    token=HF_TOKEN
)

# トークナイザのロード
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, token=HF_TOKEN)

入力データの準備

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 = ""

推論の実行

読み込んだデータセットの各データに対して、モデルで推論を実行します。

results = []
for data in tqdm(datasets):
    input_data = data["input"]

    prompt = f"""### 指示
{input_data}
### 回答
"""
    # 推論用の入力を作成
    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=200,
            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({
        "input": input_data,
        "output": output
    })

出力結果の保存

推論結果を、モデルIDに基づいたファイル名 ( [model_id]-outputs.jsonl ) で保存します。

# モデルIDからファイル名を作成
jsonl_id = re.sub(".*/", "", model_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')

まとめ

上記の手順を実行することで、モデルによる推論結果が [model_id]-outputs.jsonl というファイルに保存されます。このファイルには、入力データとそれに対するモデルの出力が含まれます。

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 JaneJohnDoe/llm-jp-3-13b-it

Finetuned
(1122)
this model