|
--- |
|
language: ja |
|
tags: |
|
- text-generation |
|
- japanese |
|
- llm |
|
- lora |
|
- instruction-tuning |
|
license: cc-by-nc-sa-4.0 |
|
datasets: |
|
- ichikara-instruction |
|
- Ego/jpflan-raw |
|
base_model: llm-jp/llm-jp-3-3.7b |
|
model_name: llm-jp-3-3.7b-it_lora_all |
|
widget: |
|
- text: " " |
|
--- |
|
|
|
# LLM-JP-3.3.7B LoRA Model |
|
|
|
This is the **LLM-JP-3.3.7B** model fine-tuned with LoRA for instruction-based Japanese text generation tasks. The model has been fine-tuned on datasets **ichikara-instruction** and **Ego/jpflan-raw**. |
|
|
|
## How to Use |
|
|
|
Below is an example of how to use the model for inference: |
|
|
|
```python |
|
import torch |
|
from unsloth import FastLanguageModel |
|
from peft import PeftModel |
|
|
|
HF_TOKEN = "" # Add your Hugging Face token here |
|
|
|
# Load the base model and tokenizer |
|
model, tokenizer = FastLanguageModel.from_pretrained( |
|
model_name="llm-jp/llm-jp-3-3.7b", |
|
dtype=None, |
|
load_in_4bit=True, |
|
trust_remote_code=True, |
|
) |
|
model = PeftModel.from_pretrained(model, "nito78/llm-jp-3-3.7b-it_lora_all", token=HF_TOKEN) |
|
|
|
# Switch to inference mode |
|
FastLanguageModel.for_inference(model) |
|
|
|
# Example usage |
|
import json |
|
|
|
# Load dataset |
|
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 |
|
|
|
# Perform inference |
|
results = [] |
|
for dt in tqdm(datasets): |
|
input = dt["input"] |
|
|
|
prompt = f"""### 指示\n{input}\n### 回ç”\n""" |
|
|
|
inputs = tokenizer([prompt], return_tensors="pt").to(model.device) |
|
|
|
outputs = model.generate(**inputs, max_new_tokens=512, use_cache=True, do_sample=False, repetition_penalty=1.2) |
|
prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split("\n### 回ç”")[-1] |
|
|
|
results.append({"task_id": dt["task_id"], "input": input, "output": prediction}) |
|
|
|
import os |
|
import json |
|
|
|
# Save results |
|
output_dir = "./results" |
|
os.makedirs(output_dir, exist_ok=True) |
|
|
|
output_file = os.path.join(output_dir, "result.jsonl") |
|
with open(output_file, "w", encoding="utf-8") as f: |
|
for result in results: |
|
json.dump(result, f, ensure_ascii=False) |
|
f.write("\n") |
|
|