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 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 library tag.