Uploaded model

  • Developed by: v284v
  • 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.

## モデル概要

このモデルは、`llm-jp/llm-jp-3-13b`をベースとした大規模言語モデル(LLM)を、特定のタスク向けにファインチューニングしたものです。
LoRA(Low-Rank Adaptation)の手法を用いて、計算資源を抑えつつ、タスクに特化した性能向上を目指しました。
本モデルは、ELYZA-tasks-100-TVデータセットにおけるタスクを解決するように学習されています。

## モデルの使用方法

### 1. 環境構築

まず、必要なライブラリをインストールします。

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

2. 推論コード

以下のコードは、Hugging Faceにアップロードされたモデルを用いて、ELYZA-tasks-100-TVデータセットのタスクに対する出力を生成します。

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

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

# モデルIDとLoRAアダプタID
base_model_id = "llm-jp/llm-jp-3-13b" 
adapter_id = "v284v/llm-jp-3-13b-temp" # こちらにアップロードしたHugging FaceのIDを指定してください。

# QLoRA config
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:
    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=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})


# jsonlファイルに結果を書き出す
import re
jsonl_id = re.sub(".*/", "", 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')

3. 提出ファイルの形式

上記のコードを実行すると、llm-jp-3-13b-temp-output.jsonl という形式のファイルが生成されます。このファイルが提出ファイルとなります。 各行はJSON形式で、以下のキーを含むオブジェクトで構成されます。

  • task_id: タスクID
  • input: 入力されたプロンプト
  • output: モデルによって生成された出力
{"task_id": "0", "input": "与えられた文章を要約してください。文章: 今日は天気が良く、公園でピクニックをしました。", "output": "今日は天気が良く、公園でピクニックをした。"}
{"task_id": "1", "input": "次の文章を英語に翻訳してください。文章: こんにちは", "output": "Hello."}
...

注意点

  • your_token の部分は、ご自身のHugging Faceトークンに置き換えてください。
  • ./elyza-tasks-100-TV_0.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 v284v/llm-jp-3-13b-temp

Finetuned
(1120)
this model