Views
No views yet
1pip install -U pip
2pip install -U transformers
3pip install -U bitsandbytes
4pip install -U accelerate
5pip install -U peft
6pip install -U torch1from transformers import pipeline
2
3# パイプラインの作成
4generator = pipeline(
5 "text-generation",
6 model="harataku/llm-jp-3-13b-finetune",
7 device=0 # GPU使用
8)
9
10# テキスト生成
11prompt = """### 指示
12好きな食べ物について教えてください
13### 回答
14"""
15response = generator(prompt, max_length=200, num_return_sequences=1)
16print(response[0]['generated_text'])1from transformers import (
2 AutoModelForCausalLM,
3 AutoTokenizer,
4 BitsAndBytesConfig
5)
6import torch
7
8# モデルの設定
9model_id = "harataku/llm-jp-3-13b-finetune"
10
11# 量子化の設定
12bnb_config = BitsAndBytesConfig(
13 load_in_4bit=True,
14 bnb_4bit_quant_type="nf4",
15 bnb_4bit_compute_dtype=torch.bfloat16,
16)
17
18# モデルとトークナイザーの読み込み
19model = AutoModelForCausalLM.from_pretrained(
20 model_id,
21 quantization_config=bnb_config,
22 device_map="auto"
23)
24tokenizer = AutoTokenizer.from_pretrained(model_id)
25
26# 推論用の関数
27def generate_response(input_text):
28 prompt = f"""### 指示
29{input_text}
30### 回答
31"""
32
33 tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
34 attention_mask = torch.ones_like(tokenized_input)
35
36 with torch.no_grad():
37 outputs = model.generate(
38 tokenized_input,
39 attention_mask=attention_mask,
40 max_new_tokens=100,
41 do_sample=False,
42 repetition_penalty=1.2,
43 pad_token_id=tokenizer.eos_token_id
44 )[0]
45
46 response = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
47 return response
48
49# 使用例
50input_text = "好きな食べ物について教えてください"
51response = generate_response(input_text)
52print(response)1import json
2import torch
3from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
4
5def generate_jsonl_outputs(model, tokenizer, input_jsonl_path, output_jsonl_path):
6 # 入力データの読み込み
7 datasets = []
8 with open(input_jsonl_path, "r") as f:
9 item = ""
10 for line in f:
11 line = line.strip()
12 item += line
13 if item.endswith("}"):
14 datasets.append(json.loads(item))
15 item = ""
16
17 # 出力の生成
18 results = []
19 for data in datasets:
20 input_text = data["input"]
21
22 prompt = f"""### 指示
23{input_text}
24### 回答
25"""
26
27 tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
28 attention_mask = torch.ones_like(tokenized_input)
29
30 with torch.no_grad():
31 outputs = model.generate(
32 tokenized_input,
33 attention_mask=attention_mask,
34 max_new_tokens=100,
35 do_sample=False,
36 repetition_penalty=1.2,
37 pad_token_id=tokenizer.eos_token_id
38 )[0]
39
40 output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
41 results.append({
42 "task_id": data["task_id"],
43 "input": input_text,
44 "output": output
45 })
46
47 # 結果をJSONL形式で保存
48 with open(output_jsonl_path, 'w', encoding='utf-8') as f:
49 for result in results:
50 json.dump(result, f, ensure_ascii=False)
51 f.write('\n')
52
53# 使用例
54def main():
55 # 入出力パスの設定
56 input_path = "path/to/input.jsonl"
57 output_path = "path/to/output.jsonl"
58
59 # モデルとトークナイザーの準備
60 model_id = "harataku/llm-jp-3-13b-finetune"
61 bnb_config = BitsAndBytesConfig(
62 load_in_4bit=True,
63 bnb_4bit_quant_type="nf4",
64 bnb_4bit_compute_dtype=torch.bfloat16,
65 )
66
67 model = AutoModelForCausalLM.from_pretrained(
68 model_id,
69 quantization_config=bnb_config,
70 device_map="auto"
71 )
72 tokenizer = AutoTokenizer.from_pretrained(model_id)
73
74 # JSONL出力の生成
75 generate_jsonl_outputs(model, tokenizer, input_path, output_path)
76
77if __name__ == "__main__":
78 main(){"task_id": "タスクID", "input": "入力テキスト", "output": "モデルの出力"}pip install transformers torch accelerate bitsandbytesmax_new_tokens: 生成する最大トークン数(デフォルト: 100)do_sample: サンプリングを行うかどうか(デフォルト: False)repetition_penalty: 繰り返しを抑制するためのペナルティ(デフォルト: 1.2)### 指示
[入力テキスト]
### 回答1# より少ないメモリ使用量の設定
2bnb_config = BitsAndBytesConfig(
3 load_in_4bit=True,
4 bnb_4bit_quant_type="nf4",
5 bnb_4bit_compute_dtype=torch.float16 # bfloat16からfloat16に変更
6)1# CPUでの実行設定
2model = AutoModelForCausalLM.from_pretrained(
3 model_id,
4 device_map="cpu",
5 low_cpu_mem_usage=True
6)