arbk
/

Transformers
Safetensors
Inference Endpoints

使い方

前提:Google Colab上での実行を想定します。

必要なライブラリのインストール

!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
!pip install -U peft

必要なライブラリの読み込み

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

ベースモデル、LoRAアダプタの指定

base_model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "arbk/llm_jp_3_13b_finetune_30"

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

from huggingface_hub import login
HF_TOKEN = "Your_Token" # 自身のhuggingfaceのトークンを入力
login(token=HF_TOKEN)

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    base_model_id,
    quantization_config=bnb_config,
    device_map="auto",
    token = HF_TOKEN
)

tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True, token = HF_TOKEN)

元のモデルにLoRAのアダプタを統合。

model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)

タスクとなるデータの読み込み。

datasets = []
with open("elyza-tasks-100-TV_0.jsonl", "r") as f: # openの第一引数ににファイル名を入力。デフォルトではelyza-tasks-100-TV_0.jsonlを例に記載。ファイルは事前に自身のカレントディレクトリにアップロードしてください。
    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["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=500,
          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})

結果をjsonl形式で保存。

import re
jsonl_id = re.sub(".*/", "", adapter_id) # デフォルトではadapter_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')

以上

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 arbk/llm_jp_3_13b_finetune_30

Finetuned
(1121)
this model

Datasets used to train arbk/llm_jp_3_13b_finetune_30