YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

実行手順

以下の手順に従うことで、Hugging Face上のモデル(llm-jp/llm-jp-3-13b + midorikawa/llm-jp-3-13b-it_lora)を用いて 入力データ(elyza-tasks-100-TV_0.jsonl)を推論し、その結果を{model_name}-outputs.jsonlというファイルに出力できます。

前提条件

  • Python環境があること(例: Google Colab)
  • GPUを使用すること
  • Hugging Faceのアクセストークン (HF_TOKEN) が取得済みであること

Usage

セットアップ

  • 必要なライブラリのインストールを行います。
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets

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

# Hugging Faceのトークンを取得
from google.colab import userdata
HF_TOKEN=userdata.get('HF_TOKEN')

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

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


# モデル読み込み
model_name = "midorikawa/llm-jp-3-13b-it_lora"

# モデル読み込み
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto",
    token = HF_TOKEN
)

tokenizer = AutoTokenizer.from_pretrained(model_name, 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_text = data["input"]

    prompt = f"""### 指示
{input_text}
### 回答:
"""

    # トークナイザーを使用して input_ids と attention_mask を取得
    tokenized_input = tokenizer(
        prompt,
        add_special_tokens=True,
        padding='longest',
        truncation=True,
        return_tensors="pt"
    ).to(model.device)

    with torch.no_grad():
        outputs = model.generate(
            input_ids=tokenized_input["input_ids"],
            attention_mask=tokenized_input["attention_mask"],
            max_new_tokens=512,
            do_sample=False,
            repetition_penalty=1.2,
            pad_token_id=tokenizer.eos_token_id
        )[0]

    # 出力をデコード
    output = tokenizer.decode(outputs[tokenized_input["input_ids"].size(1):], skip_special_tokens=True)

    results.append({"task_id": data["task_id"], "input": input_text, "output": output})

# モデル名の処理
model_name_cleaned = re.sub(".*/", "", model_name)

# 結果をファイルに保存
with open(f"./{model_name_cleaned}-outputs.jsonl", 'w', encoding='utf-8') as f:
    for result in results:
        json.dump(result, f, ensure_ascii=False)  # ensure_ascii=False は非ASCII文字の処理に有効
        f.write('\n')

以上の手順で、{model_name}-outputs.jsonlというファイルに推論結果が書き出されます。

出力結果

  • llm-jp-3-13b-it_lora-outputs.jsonl

base_model: llm-jp/llm-jp-3-13b tags: - text-generation-inference - transformers - unsloth - llama - trl license: apache-2.0 language: - en

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference API
Unable to determine this model's library. Check the docs .