Model Card for Konpekisky/llm2024_02_llm-jp-3-13b-finetune_ELYZA_task-100

Summary

このモデルは、llm-jp/llm-jp-3-13bをベースモデルとして、ELYZA-tasks-100データセットを用いて指示特化の微調整(Instruction Tuning)を行った日本語向け大規模言語モデルです。LoRA (Low-Rank Adapters)を使用してパラメータ効率の良い微調整を実施し、4bit量子化でモデルを軽量化しています。本モデルは多様な日本語タスク(QA、要約、対話など)において、与えられた指示に応答しやすくなっています。

Model Details

Intended Use

本モデルは、日本語での指示応答(Instruction Following)を目的としています。質問回答、要約、文章生成など、さまざまな自然言語処理タスクに対応可能です。

Out-of-Scope Use:

  • 違法行為や有害なコンテンツ生成
  • 医療・法律・金融など専門性が高く、正確さが求められる分野で本モデルの出力を鵜呑みにし、判断を下すこと

License

  • ベースモデル(Llama系):Llamaライセンス(研究目的利用限定)
  • データセット(ELYZA-tasks-100):CC BY 4.0

本モデルを利用する際には、元のライセンス条件に従ってください。

Training Procedure

環境:
Google Colab (Python 3.10, GPU)、transformersbitsandbytesacceleratepefttrl等を使用。

手順:

  1. llm-jp/llm-jp-3-13bモデルを4bit量子化でロード
  2. LoRA (Low-Rank Adapters) によるPEFT設定を行い、モデルをPEFT化
  3. ELYZA-tasks-100データセットをプロンプト形式(### 指示 ... ### 回答 ...)に整形
  4. SFTTrainerを使用して1エポック分の微調整を実行
  5. 学習後のモデルとトークナイザをローカルおよびHugging Face Hubへアップロード

主な学習ハイパーパラメータ:

  • エポック数: 1
  • 学習率: 5e-5
  • Max seq length: 512
  • Batch size: per_device_train_batch_size=1, gradient_accumulation_steps=2
  • LoRA設定: r=16, lora_alpha=32, lora_dropout=0.05

Evaluation

微調整後、テスト用のjsonlファイルを用いて推論を実施し、model.generate()で得た出力をJSON Lines形式で出力します。これによりモデルの応答品質を簡易的に確認できます。

How to Get Started with the Model

以下のコードは、Google Colab上で本モデルを用いてタスクを実行する一例です。
TEST_DATA_DIRTEST_DATAは、使用したいテスト用jsonlファイルのパスに合わせて変更してください。
tokenizermodelは、事前にAutoTokenizerAutoModelForCausalLMを用いてfrom_pretrained()で読み込んでいることが前提です。

!pip install -U pip
!pip install -U transformers bitsandbytes accelerate datasets peft trl
!pip install ipywidgets --upgrade

import os
import torch
import json
from tqdm import tqdm
import bitsandbytes as bnb
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig
)
from peft import PeftModel


# Google Colaboratoryで作業する場合はこちらも実行してください。
from google.colab import drive
drive.mount('/content/drive')


new_model_id = "Konpekisky/llm2024_02_llm-jp-3-13b-finetune_ELYZA_task-100"

# Fine-Tuning時と同様の4bit量子化設定
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

# モデルとトークナイザの読み込み
# Fine-Tuning時と同様にquantization_configとdevice_mapを指定
tokenizer = AutoTokenizer.from_pretrained(new_model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    new_model_id,
    device_map="auto",
    quantization_config=bnb_config,
    trust_remote_code=True
)



# テストデータのパス(事前にGoogle Colabにアップロード済みのjsonlファイル)
TEST_DATA_DIR = "your_dir_path"
TEST_DATA = "your_jsonl_file_name"
test_data_path = os.path.join(TEST_DATA_DIR, TEST_DATA)

# テストデータ読み込み
datasets = []
with open(test_data_path, "r", encoding="utf-8") 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}
### 回答
"""

    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_text, "output": output})

# 結果をJSONL形式で保存
with open("model_outputs.jsonl", "w", encoding="utf-8") as f:
    for result in results:
        json.dump(result, f, ensure_ascii=False)
        f.write("\n")

print("推論結果がmodel_outputs.jsonlに保存されました。")

上記のスニペットをGoogle Colabなどで実行すれば、モデルの基本的な推論が可能です。

Limitations and Bias

トレーニングデータ由来のバイアスを含む可能性があります。 重要な意思決定には専門家の判断が必要です。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference API
Unable to determine this model’s pipeline type. Check the docs .