Uploaded model

  • Developed by: ppapppapppap
  • License: apache-2.0
  • Finetuned from model : llm-jp/llm-jp-3-13b

This llama model was trained 2x faster with Unsloth and Huggingface's TRL library.

概要

松尾研大規模言語モデル講座2024のコンペ用の提出モデル作成の一環として作成・公開しています。

Hugging Face上のモデル(llm-jp/llm-jp-3-13b)を4bit量子化したモデルです。

学習データ等の詳細については元モデルの概要をご確認ください。

以下に、上記のモデルを用いて入力データ(elyza-tasks-100-TV_0.jsonl)を推論し、その結果を.jsonlのファイル形式で出力するコードを記します。

前提条件

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

セットアップ

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

使用方法

以下は、Google Colabにて実行する際のモデルの基本的な使用例です

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

# Hugging Faceで取得したTokenをこちらに貼る。
HF_TOKEN = "your-token"

# 自分の作成したモデルのIDをこちらに貼る。
model_name = "your_HuggingFace_username/llm-jp-3-13b-your_model_name"

# 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 = 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 = data["input"]

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

  tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
  with torch.no_grad():
      outputs = model.generate(
          tokenized_input,
          max_new_tokens=100,
          do_sample=False,
          repetition_penalty=1.2
      )[0]
  output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)

# 結果を保存
  results.append({"task_id": data["task_id"], "input": input, "output": output})

出力の保存

最後に、model_nameをベースにしたファイル名で.jsonl形式の出力ファイルを保存します。

import re
model_name = re.sub(".*/", "", model_name)
with open(f"./{model_name}-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')

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

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 ppapppapppap/llm-jp-3-13b-it

Finetuned
(1120)
this model