Transformers
Safetensors
Japanese

Model Card for Model ID

Model Details

Model Description

This is the model card of a ๐Ÿค— transformers model that has been pushed on the Hub. This model card has been automatically generated.

  • Developed by: k-n-29
  • Model type: LLM
  • Language(s) (NLP): Japanese
  • License: base_model:Apache License, Version 2.0 datasets: CC-BY-NC-SA
  • Finetuned from model : llm-jp/llm-jp-3-13b

Uses

ๅฎŸ่กŒใฎไป•ๆ–นใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚ ๅฎŸ่กŒ็’ฐๅขƒใฏOmnicampusไธŠใง็”จๆ„ใ•ใ‚ŒใŸ24GBใฎGPUใƒกใƒขใƒชใ‚’ๆŒใฃใŸL4ใ‚’ๆƒณๅฎšใ—ใฆใ„ใพใ™ใ€‚

ๅ…ทไฝ“็š„ใซใฏLoRA_template_20241127.ipynbใ‚’ใƒ™ใƒผใ‚นใซไธ‹่จ˜๏ผ“็‚นใฎๅค‰ๆ›ดใ‚’่กŒใ„ใพใ—ใŸใ€‚

  1. ichikara-instruction-003-001-1.jsonใจichikara-instruction-003-003-1.jsonใ‚’็ธฆ็ตๅˆ(concat, SQLใง่จ€ใ†union all)ใ—ใฆใ€ ichikara-instruction-003-013-1.jsonใจใ—ใฆไฝœๆˆใ—ใ€ใ“ใ‚Œใ‚’sftใซๅˆฉ็”จใ—ใพใ—ใŸใ€‚
  2. ใƒขใƒ‡ใƒซใฎๅญฆ็ฟ’ๆ™‚ใจๆŽจ่ซ–ๆ™‚ใซไธ‹่จ˜ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ๅ†’้ ญใซ่ฟฝๅŠ ใ—ใพใ—ใŸใ€‚

"### ๅ‰ๆ ใ‚ใชใŸใฏๆ—ฅๆœฌใฎๆœ‰ๅTVๅฑ€ใงๅƒใ็•ช็ต„ใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใงใ™ใ€‚ๆฌกใฎๆŒ‡็คบใซๅฏพใ—ใฆใ€ใ‚ใชใŸใฎ่ซ–็†็š„ๆ€่€ƒๅŠ›ใ‚„ๆƒณๅƒๅŠ›ใ‚’ๆดปใ‹ใ—ใฆๆญฃ็ขบใชๆƒ…ๅ ฑใงใ‚ใ‚‹ใ“ใจใ‚’ๆ„่ญ˜ใ—ใคใคใ€ๆœฌ่ณช็š„ใง่ฆ–่ด็އใŒๅ–ใ‚Œใ‚‹ใ‚ˆใ†ใช่ˆˆๅ‘ณๆทฑใ„ๅ›ž็ญ”ใ‚’่€ƒใˆใฆไธ‹ใ•ใ„ใ€‚ใพใŸใ€ๅ›ž็ญ”ใฏ้€”ไธญใง่พžใ‚ใšใซๆœ€ๅพŒใพใงๅ›ž็ญ”ใ—ใใฃใฆไธ‹ใ•ใ„ใ€‚"

  1. ไบˆๆธฌๆ™‚ใฎmax_new_tokensใ‚’100ใ‹ใ‚‰300ใซๅค‰ๆ›ดใ—ใพใ—ใŸใ€‚
# python 3.10.12
!pip install -U pip
!pip install -U transformers
!pip install -U bitsandbytes
!pip install -U accelerate
!pip install -U datasets
!pip install -U peft
!pip install -U trl
!pip install -U wandb
!pip install ipywidgets --upgrade
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    TrainingArguments,
    logging,
)
from peft import (
    LoraConfig,
    PeftModel,
    get_peft_model,
)
import os, torch, gc
from datasets import load_dataset
import bitsandbytes as bnb
from trl import SFTTrainer



# Hugging Face Token
HF_TOKEN = "writeๆจฉ้™ใฎใ‚ใ‚‹ใƒˆใƒผใ‚ฏใƒณ"




# ใƒขใƒ‡ใƒซใ‚’่ชญใฟ่พผใฟใ€‚
# llm-jp-3 1.8B, 3.7B, 13Bใฎsnapshotใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆธˆใฟใงmodelsใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซๆ ผ็ดใ—ใฆใ‚ใ‚Šใพใ™ใ€‚
# base_model_idใฎๅ€คใฏomnicampusใฎ็’ฐๅขƒใซใŠใ‘ใ‚‹ใƒขใƒ‡ใƒซใฎใƒ‘ใ‚นใ‚’่กจใ—ใฆใŠใ‚Šใ€ใใ‚Œไปฅๅค–ใฎ็’ฐๅขƒใงๅฎŸ่กŒใ™ใ‚‹ๅ ดๅˆใฏๅค‰ๆ›ดใฎๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚
# ใใฎไป–ใฎใƒขใƒ‡ใƒซใฏๅ–ๅพ—ใซๆ‰ฟ่ซพใŒๅฟ…่ฆใชใŸใ‚ใ€ๅ„่‡ชใงใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใŠ้ก˜ใ„ใ—ใพใ™ใ€‚
base_model_id = "models/models--llm-jp--llm-jp-3-13b/snapshots/cd3823f4c1fcbb0ad2e2af46036ab1b0ca13192a" #Fine-Tuningใ™ใ‚‹ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ
# omnicampusไปฅๅค–ใฎ็’ฐๅขƒใ‚’ใ”ๅˆฉ็”จใฎๆ–นใฏไปฅไธ‹ใ‚’ใ”ๅˆฉ็”จใใ ใ•ใ„ใ€‚
# base_model_id = "llm-jp/llm-jp-3-13b"
new_model_id = "llm-jp-3-13b-finetune-ichikara" #Fine-Tuningใ—ใŸใƒขใƒ‡ใƒซใซใคใ‘ใŸใ„ๅๅ‰




"""
bnb_config: ้‡ๅญๅŒ–ใฎ่จญๅฎš

  - load_in_4bit:
      - 4bit้‡ๅญๅŒ–ๅฝขๅผใงใƒขใƒ‡ใƒซใ‚’ใƒญใƒผใƒ‰

  - bnb_4bit_quant_type:
      - ้‡ๅญๅŒ–ใฎๅฝขๅผใ‚’ๆŒ‡ๅฎš

  - bnb_4bit_compute_dtype:
      - ้‡ๅญๅŒ–ใ•ใ‚ŒใŸ้‡ใฟใ‚’็”จใ„ใฆ่จˆ็ฎ—ใ™ใ‚‹้š›ใฎใƒ‡ใƒผใ‚ฟๅž‹

"""

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4", # nf4ใฏ้€šๅธธใฎINT4ใ‚ˆใ‚Š็ฒพๅบฆใŒ้ซ˜ใใ€ใƒ‹ใƒฅใƒผใƒฉใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใฎๅˆ†ๅธƒใซๆœ€้ฉใงใ™
    bnb_4bit_compute_dtype=torch.bfloat16,
)


"""
model: ใƒขใƒ‡ใƒซ

  - base_model:
      - ่ชญใฟ่พผใ‚€ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ (ไบ‹ๅ‰ใซๅฎš็พฉใ—ใŸใ‚‚ใฎ)

  - quantization_config:
      - bnb_configใง่จญๅฎšใ—ใŸ้‡ๅญๅŒ–่จญๅฎš

  - device_map:
      - ใƒขใƒ‡ใƒซใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ใƒ‡ใƒใ‚คใ‚น (CPU/GPU) "auto"ใง่‡ชๅ‹•ใซๅ‰ฒใ‚Šๅฝ“ใฆใ‚‰ใ‚Œใพใ™ใ€‚

tokenizer: ใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚ถใƒผ

  - base_model:
      - ่ชญใฟ่พผใ‚€ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ (ไบ‹ๅ‰ใซๅฎš็พฉใ—ใŸใ‚‚ใฎ)

  - trust_remote_code:
      - ใƒชใƒขใƒผใƒˆใ‚ณใƒผใƒ‰ใฎๅฎŸ่กŒใ‚’่จฑๅฏ (ใ‚ซใ‚นใ‚ฟใƒ ใƒขใƒ‡ใƒซใชใฉ)
"""
model = AutoModelForCausalLM.from_pretrained(
    base_model_id,
    quantization_config=bnb_config,
    device_map="auto"
)

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

"""
find_all_linear_names: ใƒขใƒ‡ใƒซๅ†…ใฎ4bit้‡ๅญๅŒ–็ทšๅฝขๅฑคใ‚’ๆŽขใ—ใพใ™ใ€‚
"""

def find_all_linear_names(model):
    cls = bnb.nn.Linear4bit # 4bit้‡ๅญๅŒ–็ทšๅฝขๅฑคใ‚ฏใƒฉใ‚นใ‚’ๆŒ‡ๅฎš
    lora_module_names = set() # ใ“ใ“ใซๅ–ๅพ—ใ—ใŸ็ทšๅฝขๅฑคใ‚’ไฟๆŒใ—ใพใ™ใ€‚

    # ใƒขใƒ‡ใƒซๅ†…ใฎๅ…จใฆใฎใƒขใ‚ธใƒฅใƒผใƒซใ‚’ๆŽข็ดขใ—ใพใ™
    for name, module in model.named_modules():
        if isinstance(module, cls): # ใƒขใ‚ธใƒฅใƒผใƒซใŒ4bit้‡ๅญๅŒ–็ทšๅฝขๅฑคใฎๅ ดๅˆ
            names = name.split('.') # ใƒขใ‚ธใƒฅใƒผใƒซใฎๅๅ‰ใ‚’ๅˆ†ๅ‰ฒ (ใƒใ‚นใƒˆใ•ใ‚Œใฆใ‚‹้š›ใชใฉใซๅฏพๅ‡ฆ)
            lora_module_names.add(names[0] if len(names) == 1 else names[-1]) # ๆœ€ไธ‹ๅฑคใฎๅๅ‰ใ‚’lora_module_namesใซ่ฟฝๅŠ 

    # 'lm_head' ใฏ16ใƒ“ใƒƒใƒˆๆผ”็ฎ—ใฎ้š›ใซ้™คๅค–ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใŸใ‚ใ€lora_module_namesใ‹ใ‚‰ๅ‰Š้™ค
    if 'lm_head' in lora_module_names:
        lora_module_names.remove('lm_head')

    return list(lora_module_names) # lora_module_namesใ‚’ใƒชใ‚นใƒˆใซๅค‰ๆ›ใ—ใฆ่ฟ”ใ—ใพใ™ใ€‚

modules = find_all_linear_names(model)

"""
peft_config: PEFTใฎๆง‹ๆˆ่จญๅฎš

  - r
      - LoRA ใฎใƒฉใƒณใ‚ฏ (4, 8, 16 ,32...)
      - ๅข—ใ‚„ใ™ใปใฉๅญฆ็ฟ’ใŒๆ—ใ‚‹ใŒ, ้Žๅญฆ็ฟ’ใฎใƒชใ‚นใ‚ฏใ‚‚้ซ˜ใพใ‚‹ใฎใงๆณจๆ„

  - lora_alpha
      - LoRAใฎใ‚นใ‚ฑใƒผใƒชใƒณใ‚ฐไฟ‚ๆ•ฐ

  - lora_dropout
      - ใƒ‰ใƒญใƒƒใƒ—ใ‚ขใ‚ฆใƒˆ็އ๏ผˆ้Žๅญฆ็ฟ’ใ‚’้˜ฒใใŸใ‚ใฎๅ‰ฒๅˆ๏ผ‰

  - bias
      - ใƒใ‚คใ‚ขใ‚น้ …ใฎๆ‰ฑใ„ ("none"ใฎๅ ดๅˆใ€LoRAใฏใƒใ‚คใ‚ขใ‚นใ‚’ๅญฆ็ฟ’ใ—ใชใ„)

  - task_type
      - ใ‚ฟใ‚นใ‚ฏใ‚ฟใ‚คใƒ—

  - target_modules
      - LoRAใ‚’้ฉ็”จใ™ใ‚‹ใ‚ฟใƒผใ‚ฒใƒƒใƒˆใƒขใ‚ธใƒฅใƒผใƒซ (ๅ‰ใฎใ‚ณใƒผใƒ‰ใง็‰นๅฎšใ—ใŸๅฑค)
"""

peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
    target_modules=modules,
)

model = get_peft_model(model, peft_config)

"""
ๅญฆ็ฟ’ใซ็”จใ„ใ‚‹ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใฎๆŒ‡ๅฎš
ไปŠๅ›žใฏLLM-jp ใฎๅ…ฌ้–‹ใ—ใฆใ„ใ‚‹ Ichikara Instruction ใ‚’ไฝฟใ„ใพใ™ใ€‚ใƒ‡ใƒผใ‚ฟใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใŸใ‚ใซใฏ็”ณ่ซ‹ใŒๅฟ…่ฆใงใ™ใฎใงใ€ไฝฟใ„ใŸใ„ๆ–นใฎใฟ็”ณ่ซ‹ใ‚’ใ—ใฆใใ ใ•ใ„ใ€‚
Ichikara Instruciton ใ‚’ Hugging Face Hub ใซใฆๅ…ฌ้–‹ใ™ใ‚‹ใ“ใจใฏใŠๆŽงใˆใใ ใ•ใ„ใ€‚
ใพใŸใ€CC-BY-NC-SAใงใ™ใฎใงใƒขใƒ‡ใƒซใฏใƒฉใ‚คใ‚ปใƒณใ‚นใ‚’็ถ™ๆ‰ฟใ™ใ‚‹ๅ‰ๆใงใŠไฝฟใ„ใใ ใ•ใ„ใ€‚

ไธ‹่จ˜ใฎใƒชใƒณใ‚ฏใ‹ใ‚‰็”ณ่ซ‹ใ‚’็ต‚ใˆใŸๅ…ˆใซ Google Drive ใŒใ‚ใ‚Šใ€Distribution20241221_all ใจใ„ใ†ใƒ•ใ‚ฉใƒซใƒ€ใ”ใจใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ—ใฆใใ ใ•ใ„ใ€‚
ไปŠๅ›žใฏใ€Œichikara-instruction-003-001-1.jsonใ€ใ‚’ไฝฟใ„ใพใ™ใ€‚ๅฟ…่ฆใงใ‚ใ‚Œใฐๅฑ•้–‹๏ผˆ!unzip ใชใฉ๏ผ‰ใ—ใ€ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใฎใƒ‘ใ‚นใ‚’้ฉๅˆ‡ใซๆŒ‡ๅฎšใ—ใฆใใ ใ•ใ„ใ€‚
omnicampusใฎ้–‹็™บ็’ฐๅขƒใงใฏๅ–ๅพ—ใ—ใŸใƒ‡ใƒผใ‚ฟใ‚’ๅทฆๅดใซใƒ‰ใƒฉใƒƒใ‚ฐใ‚ขใƒณใƒ‰ใƒ‰ใƒญใƒƒใƒ—ใ—ใฆใŠไฝฟใ„ใใ ใ•ใ„ใ€‚

https://liat-aip.sakura.ne.jp/wp/llmใฎใŸใ‚ใฎๆ—ฅๆœฌ่ชžใ‚คใƒณใ‚นใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใƒ‡ใƒผใ‚ฟไฝœๆˆ/llmใฎใŸใ‚ใฎๆ—ฅๆœฌ่ชžใ‚คใƒณใ‚นใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใƒ‡ใƒผใ‚ฟ-ๅ…ฌ้–‹/
้–ขๆ น่ก, ๅฎ‰่—คใพใ‚„, ๅพŒ่—ค็พŽ็Ÿฅๅญ, ้ˆดๆœจไน…็พŽ, ๆฒณๅŽŸๅคง่ผ”, ไบ•ไน‹ไธŠ็›ดไนŸ, ไนพๅฅๅคช้ƒŽ. ichikara-instruction: LLMใฎใŸใ‚ใฎๆ—ฅๆœฌ่ชžใ‚คใƒณใ‚นใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใƒ‡ใƒผใ‚ฟใฎๆง‹็ฏ‰. ่จ€่ชžๅ‡ฆ็†ๅญฆไผš็ฌฌ30ๅ›žๅนดๆฌกๅคงไผš(2024)

ichikara-instruction-003-001-1.jsonใจichikara-instruction-003-003-1.jsonใ‚’็ต„ใฟๅˆใ‚ใ›ใฆ
ichikara-instruction-003-013-1.jsonใจใ—ใฆไฝœๆˆใ—ใ€ใ“ใ‚Œใ‚’sftใซๅˆฉ็”จใ—ใŸ

"""

dataset = load_dataset("json", data_files="./ichikara-instruction-003-013-1.json")
dataset

# ๅญฆ็ฟ’ๆ™‚ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใฎๅฎš็พฉ
prompt = """### ๅ‰ๆ
ใ‚ใชใŸใฏๆ—ฅๆœฌใฎๆœ‰ๅTVๅฑ€ใงๅƒใ็•ช็ต„ใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใงใ™ใ€‚ๆฌกใฎๆŒ‡็คบใซๅฏพใ—ใฆใ€ใ‚ใชใŸใฎ่ซ–็†็š„ๆ€่€ƒๅŠ›ใ‚„ๆƒณๅƒๅŠ›ใ‚’ๆดปใ‹ใ—ใฆๆญฃ็ขบใชๆƒ…ๅ ฑใงใ‚ใ‚‹ใ“ใจใ‚’ๆ„่ญ˜ใ—ใคใคใ€ๆœฌ่ณช็š„ใง่ฆ–่ด็އใŒๅ–ใ‚Œใ‚‹ใ‚ˆใ†ใช่ˆˆๅ‘ณๆทฑใ„ๅ›ž็ญ”ใ‚’่€ƒใˆใฆไธ‹ใ•ใ„ใ€‚ใพใŸใ€ๅ›ž็ญ”ใฏ้€”ไธญใง่พžใ‚ใšใซๆœ€ๅพŒใพใงๅ›ž็ญ”ใ—ใใฃใฆไธ‹ใ•ใ„ใ€‚
ๆŒ‡็คบ
{}
### ๅ›ž็ญ”
{}"""


"""
formatting_prompts_func: ๅ„ใƒ‡ใƒผใ‚ฟใ‚’ใƒ—ใƒญใƒณใƒ—ใƒˆใซๅˆใ‚ใ›ใŸๅฝขๅผใซๅˆใ‚ใ›ใ‚‹
"""
EOS_TOKEN = tokenizer.eos_token # ใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚ถใƒผใฎEOSใƒˆใƒผใ‚ฏใƒณ๏ผˆๆ–‡ๆœซใƒˆใƒผใ‚ฏใƒณ๏ผ‰
def formatting_prompts_func(examples):
    input = examples["text"] # ๅ…ฅๅŠ›ใƒ‡ใƒผใ‚ฟ
    output = examples["output"] # ๅ‡บๅŠ›ใƒ‡ใƒผใ‚ฟ
    text = prompt.format(input, output) + EOS_TOKEN # ใƒ—ใƒญใƒณใƒ—ใƒˆใฎไฝœๆˆ
    return { "formatted_text" : text, } # ๆ–ฐใ—ใ„ใƒ•ใ‚ฃใƒผใƒซใƒ‰ "formatted_text" ใ‚’่ฟ”ใ™
pass

# # ๅ„ใƒ‡ใƒผใ‚ฟใซใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ‚’้ฉ็”จ
dataset = dataset.map(
    formatting_prompts_func,
    num_proc= 4, # ไธฆๅˆ—ๅ‡ฆ็†ๆ•ฐใ‚’ๆŒ‡ๅฎš
)

dataset

# ใƒ‡ใƒผใ‚ฟใ‚’็ขบ่ช
print(dataset["train"]["formatted_text"][3])


"""
training_arguments: ๅญฆ็ฟ’ใฎ่จญๅฎš

  - output_dir:
      -ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๅพŒใฎใƒขใƒ‡ใƒซใ‚’ไฟๅญ˜ใ™ใ‚‹ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช

  - per_device_train_batch_size:
      - ใƒ‡ใƒใ‚คใ‚นใ”ใจใฎใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒใƒƒใƒใ‚ตใ‚คใ‚บ

  - per_device_
  _batch_size:
      - ใƒ‡ใƒใ‚คใ‚นใ”ใจใฎ่ฉ•ไพกใƒใƒƒใƒใ‚ตใ‚คใ‚บ

  - gradient_accumulation_steps:
      - ๅ‹พ้…ใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ๅ‰ใซใ‚นใƒ†ใƒƒใƒ—ใ‚’็ฉใฟ้‡ใญใ‚‹ๅ›žๆ•ฐ

  - optim:
      - ใ‚ชใƒ—ใƒ†ใ‚ฃใƒžใ‚คใ‚ถใฎ่จญๅฎš

  - num_train_epochs:
      - ใ‚จใƒใƒƒใ‚ฏๆ•ฐ

  - eval_strategy:
      - ่ฉ•ไพกใฎๆˆฆ็•ฅ ("no"/"steps"/"epoch")

  - eval_steps:
      - eval_strategyใŒ"steps"ใฎใจใใ€่ฉ•ไพกใ‚’่กŒใ†step้–“้š”

  - logging_strategy:
      - ใƒญใ‚ฐ่จ˜้Œฒใฎๆˆฆ็•ฅ

  - logging_steps:
      - ใƒญใ‚ฐใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ‚นใƒ†ใƒƒใƒ—้–“้š”

  - warmup_steps:
      - ๅญฆ็ฟ’็އใฎใ‚ฆใ‚ฉใƒผใƒ ใ‚ขใƒƒใƒ—ใ‚นใƒ†ใƒƒใƒ—ๆ•ฐ

  - save_steps:
      - ใƒขใƒ‡ใƒซใ‚’ไฟๅญ˜ใ™ใ‚‹ใ‚นใƒ†ใƒƒใƒ—้–“้š”

  - save_total_limit:
      - ไฟๅญ˜ใ—ใฆใŠใcheckpointใฎๆ•ฐ

  - max_steps:
      - ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใฎๆœ€ๅคงใ‚นใƒ†ใƒƒใƒ—ๆ•ฐ

  - learning_rate:
      - ๅญฆ็ฟ’็އ

  - fp16:
      - 16bitๆตฎๅ‹•ๅฐๆ•ฐ็‚นใฎไฝฟ็”จ่จญๅฎš๏ผˆ็ฌฌ8ๅ›žๆผ”็ฟ’ใ‚’ๅ‚่€ƒใซใ™ใ‚‹ใจ่‰ฏใ„ใงใ™๏ผ‰

  - bf16:
      - BFloat16ใฎไฝฟ็”จ่จญๅฎš

  - group_by_length:
      -  ๅ…ฅๅŠ›ใ‚ทใƒผใ‚ฑใƒณใ‚นใฎ้•ทใ•ใซใ‚ˆใ‚Šใƒใƒƒใƒใ‚’ใ‚ฐใƒซใƒผใƒ—ๅŒ– (ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใฎๅŠน็އๅŒ–)

  - report_to:
      - ใƒญใ‚ฐใฎ้€ไฟกๅ…ˆ ("wandb"/"tensorboard"ใชใฉ)
"""

training_arguments = TrainingArguments(
    output_dir=new_model_id,
    per_device_train_batch_size=1,
    gradient_accumulation_steps=2,
    optim="paged_adamw_32bit",
    num_train_epochs=1,
    logging_strategy="steps",
    logging_steps=10,
    warmup_steps=10,
    save_steps=100,
    save_total_limit = 2,
    max_steps = -1,
    learning_rate=5e-5,
    fp16=False,
    bf16=False,
    seed = 3407,
    group_by_length=True,
    report_to="none"
)


"""
SFTTrainer: Supervised Fine-Tuningใซ้–ขใ™ใ‚‹่จญๅฎš

  - model:
      - ่ชญใฟ่พผใ‚“ใ ใƒ™ใƒผใ‚นใฎใƒขใƒ‡ใƒซ

  - train_dataset:
      - ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใซไฝฟ็”จใ™ใ‚‹ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆ

  - eval_dataset:
      - ่ฉ•ไพกใซไฝฟ็”จใ™ใ‚‹ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆ

  - peft_config:
      - PEFT๏ผˆParameter-Efficient Fine-Tuning๏ผ‰ใฎ่จญๅฎš๏ผˆLoRAใ‚’ๅˆฉ็”จใ™ใ‚‹ๅ ดๅˆใซๆŒ‡ๅฎš๏ผ‰

  - max_seq_length:
      - ใƒขใƒ‡ใƒซใซๅ…ฅๅŠ›ใ•ใ‚Œใ‚‹ใ‚ทใƒผใ‚ฑใƒณใ‚นใฎๆœ€ๅคงใƒˆใƒผใ‚ฏใƒณ้•ท

  - dataset_text_field:
      - ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆๅ†…ใฎๅญฆ็ฟ’ใซไฝฟใ†ใƒ†ใ‚ญใ‚นใƒˆใ‚’ๅซใ‚€ใƒ•ใ‚ฃใƒผใƒซใƒ‰ๅ

  - tokenizer:
      - ใƒขใƒ‡ใƒซใซๅฏพๅฟœใ™ใ‚‹ใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚ถใƒผ

  - args:
      - ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใซไฝฟ็”จใ™ใ‚‹ใƒใ‚คใƒ‘ใƒผใƒ‘ใƒฉใƒกใƒผใ‚ฟ๏ผˆTrainingArgumentsใฎ่จญๅฎšใ‚’ๆŒ‡ๅฎš๏ผ‰

  - packing:
      - ๅ…ฅๅŠ›ใ‚ทใƒผใ‚ฑใƒณใ‚นใฎใƒ‘ใƒƒใ‚ญใƒณใ‚ฐใ‚’่กŒใ†ใ‹ใฉใ†ใ‹ใฎ่จญๅฎš (False ใซ่จญๅฎšใ™ใ‚‹ใ“ใจใงใ€ๅ„ๅ…ฅๅŠ›ใ‚’็‹ฌ็ซ‹ใ—ใฆๆ‰ฑใ†)
"""
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset["train"],
    peft_config=peft_config,
    max_seq_length= 512,
    dataset_text_field="formatted_text",
    tokenizer=tokenizer,
    args=training_arguments,
    packing= False,
)

model.config.use_cache = False # ใ‚ญใƒฃใƒƒใ‚ทใƒฅๆฉŸ่ƒฝใ‚’็„กๅŠนๅŒ–
trainer.train() # ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ‚’ๅฎŸ่กŒ


# ใ‚ฟใ‚นใ‚ฏใจใชใ‚‹ใƒ‡ใƒผใ‚ฟใฎ่ชญใฟ่พผใฟใ€‚
# omnicampusใฎ้–‹็™บ็’ฐๅขƒใงใฏใ€ๅทฆใซใ‚ฟใ‚นใ‚ฏใฎjsonlใ‚’ใƒ‰ใƒฉใƒƒใ‚ฐใ‚ขใƒณใƒ‰ใƒ‰ใƒญใƒƒใƒ—ใ—ใฆใ‹ใ‚‰ๅฎŸ่กŒใ€‚
import json
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 = ""


# ใƒขใƒ‡ใƒซใซใ‚ˆใ‚‹ใ‚ฟใ‚นใ‚ฏใฎๆŽจ่ซ–ใ€‚
from tqdm import tqdm

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

  input = data["input"]

  prompt = f"""### ๅ‰ๆ
ใ‚ใชใŸใฏๆ—ฅๆœฌใฎๆœ‰ๅTVๅฑ€ใงๅƒใ็•ช็ต„ใƒ—ใƒญใƒ‡ใƒฅใƒผใ‚ตใƒผใงใ™ใ€‚ๆฌกใฎๆŒ‡็คบใซๅฏพใ—ใฆใ€ใ‚ใชใŸใฎ่ซ–็†็š„ๆ€่€ƒๅŠ›ใ‚„ๆƒณๅƒๅŠ›ใ‚’ๆดปใ‹ใ—ใฆๆญฃ็ขบใชๆƒ…ๅ ฑใงใ‚ใ‚‹ใ“ใจใ‚’ๆ„่ญ˜ใ—ใคใคใ€ๆœฌ่ณช็š„ใง่ฆ–่ด็އใŒๅ–ใ‚Œใ‚‹ใ‚ˆใ†ใช่ˆˆๅ‘ณๆทฑใ„ๅ›ž็ญ”ใ‚’่€ƒใˆใฆไธ‹ใ•ใ„ใ€‚ใพใŸใ€ๅ›ž็ญ”ใฏ้€”ไธญใง่พžใ‚ใšใซๆœ€ๅพŒใพใงๅ›ž็ญ”ใ—ใใฃใฆไธ‹ใ•ใ„ใ€‚

 ๆŒ‡็คบ
  {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=300,
          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})


# ใ“ใกใ‚‰ใง็”Ÿๆˆใ•ใ‚ŒใŸjsolใ‚’ๆๅ‡บใ—ใฆใใ ใ•ใ„ใ€‚
# ๆœฌใ‚ณใƒผใƒ‰ใงใฏinputใจeval_aspectใ‚‚ๅซใ‚“ใงใ„ใพใ™ใŒใ€ใชใใฆใ‚‚ๅ•้กŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚
# ๅฟ…้ ˆใชใฎใฏtask_idใจoutputใจใชใ‚Šใพใ™ใ€‚
import re
jsonl_id = re.sub(".*/", "", new_model_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')


# ใƒขใƒ‡ใƒซใจใƒˆใƒผใ‚ฏใƒŠใ‚คใ‚ถใƒผใ‚’Hugging Faceใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰
model.push_to_hub(new_model_id, token=HF_TOKEN, private=True) # Online saving
tokenizer.push_to_hub(new_model_id, token=HF_TOKEN, private=True) # Online saving

Direct Use

[More Information Needed]

Downstream Use [optional]

[More Information Needed]

Out-of-Scope Use

[More Information Needed]

Bias, Risks, and Limitations

[More Information Needed]

Recommendations

Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.

How to Get Started with the Model

Use the code below to get started with the model.

[More Information Needed]

Training Details

Training Data

[More Information Needed]

Training Procedure

Preprocessing [optional]

[More Information Needed]

Training Hyperparameters

  • Training regime: [More Information Needed]

Speeds, Sizes, Times [optional]

[More Information Needed]

Evaluation

Testing Data, Factors & Metrics

Testing Data

[More Information Needed]

Factors

[More Information Needed]

Metrics

[More Information Needed]

Results

[More Information Needed]

Summary

Model Examination [optional]

[More Information Needed]

Environmental Impact

Carbon emissions can be estimated using the Machine Learning Impact calculator presented in Lacoste et al. (2019).

  • Hardware Type: [More Information Needed]
  • Hours used: [More Information Needed]
  • Cloud Provider: [More Information Needed]
  • Compute Region: [More Information Needed]
  • Carbon Emitted: [More Information Needed]

Technical Specifications [optional]

Model Architecture and Objective

[More Information Needed]

Compute Infrastructure

[More Information Needed]

Hardware

[More Information Needed]

Software

[More Information Needed]

Citation [optional]

BibTeX:

[More Information Needed]

APA:

[More Information Needed]

Glossary [optional]

[More Information Needed]

More Information [optional]

[More Information Needed]

Model Card Authors [optional]

[More Information Needed]

Model Card Contact

[More Information Needed]

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for k-n-29/llm-jp-3-13b-finetune-ichikara

Finetuned
(1103)
this model