Uses

以下のコードで40分ほどでElyza-tasks-TV-100の推論が終了します。

#推論時のコード

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

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

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

model_id = "llm-jp/llm-jp-3-13b"  
adapter_id = "kiseich/llm-jp-3-13b-Etask"  

# 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 = ""  


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})  

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')  
        
#以上でjsonlファイルを得る。  

Training Data

Elyza-tasks-100にてSFTされている。

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 kiseich/llm-jp-3-13b-Etask

Finetuned
(1121)
this model

Dataset used to train kiseich/llm-jp-3-13b-Etask