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

モデル詳細

このモデルは東京大学松尾・岩沢研究室のLLM講座2024の課題のために作られたものです。

Base Model type: llm-jp/llm-jp-3-13b
Language(s) (NLP): Main languages are English, Japanese
License: This model is licensed under Apache license 2.0

学習データ

  • ichikara-instruction

インストール

必要なパッケージのインストール:

!pip install -q datasets==3.0.2 transformers==4.45.0 accelerate==1.0.1 peft==0.13.2 trl==0.11.4 bitsandbytes==0.44.1

使用方法

以下は、モデルの基本的な使用例です:

from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
)

from peft import (
    LoraConfig,
    PeftModel,
    get_peft_model,
)

import torch
from tqdm import tqdm
import json

Google Colabを利用している場合は、シークレットキーにHF_TOKENを登録します。

from google.colab import userdata
HF_TOKEN = userdata.get("HF_TOKEN")
# ベースとなるモデルと学習したLoRAのアダプタ。
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "rikioka/llm-jp-3-13b-finetune"
# 量子化の設定
bnb_config = BitsAndBytesConfig(
    load_in_8bit=True,
)

# LLMの読み込み
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map="auto",
    torch_dtype="auto",
    trust_remote_code=True,
    token=HF_TOKEN
)

# Tokenizerの読み込み
tokenizer = AutoTokenizer.from_pretrained(
    model_id,
    trust_remote_code=True,
    token=HF_TOKEN
)

# LoRAの設定を定義
peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
    target_modules=["gate_proj", "down_proj", "up_proj", "q_proj", "k_proj", "v_proj", "o_proj"]
)

# 元のモデルにLoRAのアダプタを統合
model = PeftModel.from_pretrained(model, adapter_id, token=HF_TOKEN)

dataフォルダ配下にテストデータを配置します。

datasets = []
with open("./data/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 = ""
from tqdm import tqdm

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

  input = data["input"]

  prompt = f"""### 指示
  {input}
  ### 回答
  """

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

with open(f"./submit/outputs.jsonl", "w", encoding="utf-8") as f:
    for result in results:
        json.dump(result, f, ensure_ascii=False)  # ensure_ascii=False for handling non-ASCII characters
        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 library tag.