llm-jp-3-13b_mix_30000_1209

このモデルは日本語テキスト生成タスク向けに最適化されたLoRAアダプタ付きのモデルです。

Sample Use

以下は、elyza-tasks-100-TV_0.jsonl回答のためのコードです。


!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

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

# ベースとなるモデルと学習したLoRAのアダプタ。
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "morizon/llm-jp-3-13b_mix_30000_1209"

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

# Load model
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map="auto",
    token = HF_TOKEN
)

# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, token = HF_TOKEN)

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

# モデルを評価モード(推論モード)に切り替える
model.eval()

# データセットの読み込み。
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 = ""


# システムプロンプト(固定の指示)
system_prompt = """
あなたはユーザが知りたいことを正確に把握し、的確に回答するアシスタントです。
1. 指示に従う際は、必ずその内容を完全に理解し、結論を優先的に考慮するように心掛けてください。
2. 問題の解答となる根拠は、常に文章内から探し出すようにして下さい。
3. 指示から主要な情報と詳細を抽出し、要点を漏らさず回答することを重視して下さい。
4. 回答のトーンやスタイルは、与えられたテーマや質問に合わせて柔軟に調整して下さい。
5. 回答を作成した後は、必ず推敲を行い、誤りや曖昧さがないかどうか確認して下さい。
"""

results = []

# データセットの処理
for data in tqdm(datasets):

    input_text = data["input"]

    # プロンプトの構築(システムプロンプト + ユーザー入力)
    prompt = f"""### 指示
{system_prompt}

{input_text}
### 回答
"""

    # トークナイズ
    tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
    attention_mask = torch.ones_like(tokenized_input)

    # 推論パラメータの設定
    max_new_tokens = 1024
    do_sample = True
    top_p = 0.95
    temperature = 0.7
    repetition_penalty = 1.05

    # 推論実行
    with torch.no_grad():
        outputs = model.generate(
            tokenized_input,
            attention_mask=attention_mask,  # attention_maskを明示的に指定
            max_new_tokens=max_new_tokens,
            do_sample=do_sample,
            top_p=top_p,
            temperature=temperature,
            repetition_penalty=repetition_penalty,
            pad_token_id=tokenizer.eos_token_id
        )[0]

    # 出力の整形
    output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)

    # 結果を表示
    print(f"Task ID: {data['task_id']}\nInput: {input_text}\nOutput: {output}\n{'-'*50}")

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

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)  # 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 Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for morizon/llm-jp-3-13b_mix_30000_1209

Adapter
(14)
this model