haqishen commited on
Commit
1849661
1 Parent(s): b1eadf3

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +171 -0
README.md ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - ja
5
+ license: llama3
6
+ base_model: meta-llama/Meta-Llama-3-8B-Instruct
7
+ datasets:
8
+ - fujiki/japanese_hh-rlhf-49k
9
+ library_name: transformers
10
+ pipeline_tag: text-generation
11
+ ---
12
+
13
+ ## Introduction
14
+
15
+ This is a `meta-llama/Meta-Llama-3-8B-Instruct` model that finetuned on **Japanese** conversation dataset.
16
+
17
+ Dataset: [japanese_hh-rlhf-49k](https://huggingface.co/datasets/fujiki/japanese_hh-rlhf-49k)
18
+
19
+ Training framework: [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory/tree/main)
20
+
21
+ Reference: [shenzhi-wang/Llama3-8B-Chinese-Chat](https://huggingface.co/shenzhi-wang/Llama3-8B-Chinese-Chat)
22
+
23
+ ## How to use
24
+
25
+ This repository contains two versions of Meta-Llama-3-8B-Instruct, for use with transformers and with the original `llama3` codebase.
26
+
27
+ ### Use with transformers
28
+
29
+ You can run conversational inference using the Transformers pipeline abstraction, or by leveraging the Auto classes with the `generate()` function. Let's see examples of both.
30
+
31
+ #### Transformers pipeline
32
+
33
+ ```python
34
+ import transformers
35
+ import torch
36
+
37
+ model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
38
+
39
+ pipeline = transformers.pipeline(
40
+ "text-generation",
41
+ model=model_id,
42
+ model_kwargs={"torch_dtype": torch.bfloat16},
43
+ device="auto",
44
+ )
45
+
46
+ messages = [
47
+ {"role": "system", "content": "あなたは、常に海賊の言葉で返事する海賊チャットボットです!"},
48
+ {"role": "user", "content": "自己紹介してください"},
49
+ ]
50
+
51
+ prompt = pipeline.tokenizer.apply_chat_template(
52
+ messages,
53
+ tokenize=False,
54
+ add_generation_prompt=True
55
+ )
56
+
57
+ terminators = [
58
+ pipeline.tokenizer.eos_token_id,
59
+ pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
60
+ ]
61
+
62
+ outputs = pipeline(
63
+ prompt,
64
+ max_new_tokens=256,
65
+ eos_token_id=terminators,
66
+ do_sample=True,
67
+ temperature=0.6,
68
+ top_p=0.9,
69
+ )
70
+ print(outputs[0]["generated_text"][len(prompt):])
71
+ ```
72
+
73
+ #### Transformers AutoModelForCausalLM
74
+
75
+ ```python
76
+ from transformers import AutoTokenizer, AutoModelForCausalLM
77
+ import torch
78
+
79
+ model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
80
+
81
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
82
+ model = AutoModelForCausalLM.from_pretrained(
83
+ model_id,
84
+ torch_dtype=torch.bfloat16,
85
+ device_map="auto",
86
+ )
87
+
88
+ messages = [
89
+ {"role": "system", "content": "あなたは、常に海賊の言葉で返事する海賊チャットボットです!"},
90
+ {"role": "user", "content": "自己紹介してください"},
91
+ ]
92
+
93
+ input_ids = tokenizer.apply_chat_template(
94
+ messages,
95
+ add_generation_prompt=True,
96
+ return_tensors="pt"
97
+ ).to(model.device)
98
+
99
+ terminators = [
100
+ tokenizer.eos_token_id,
101
+ tokenizer.convert_tokens_to_ids("<|eot_id|>")
102
+ ]
103
+
104
+ outputs = model.generate(
105
+ input_ids,
106
+ max_new_tokens=256,
107
+ eos_token_id=terminators,
108
+ do_sample=True,
109
+ temperature=0.6,
110
+ top_p=0.9,
111
+ )
112
+ response = outputs[0][input_ids.shape[-1]:]
113
+ print(tokenizer.decode(response, skip_special_tokens=True))
114
+ ```
115
+
116
+ ## Examples
117
+
118
+ ```
119
+ User: 富士山を紹介してください
120
+
121
+ Assistant: 富士山は、日本で最も有名な山で、世界で最も有名な山の一つです。富士山は、静岡県と山梨県の境界に位置し、標高3,776メートルで、日本で最も高い山です。山は、約12,000年前に噴火し、現在も活動しています。
122
+ ```
123
+
124
+ ```
125
+ User: 私は自分の父と母の結婚式に招待されていません、それはなぜですか?
126
+
127
+ Assistant: あなたが招待されていない理由はさまざまな可能性があります。ここにいくつかの可能性があります:
128
+
129
+ 1.彼らはあなたを知らないか、またはあなたの存在を忘れています。彼らはあなたの存在を知っているかもしれませんが、あなたを招待することを忘れていました。
130
+ 2.彼らはあなたの関係を知らないか、またはあなたの家族との関係を知らないかもしれません。彼らはあなたの家族との関係を知っているかもしれませんが、あなたを招待することを忘れていました。
131
+ 3.彼らはあなたの財政状況を知らないか、またはあなたの財政状況を知らないかもしれません。彼らはあなたの財政状況を知っているかもしれませんが、あなたを招待することを忘れていました。
132
+ 4.彼らはあなたの家族との関係を知らないか、またはあなたの家族との関係を知らないかもしれません。彼らはあなたの家族との関係を知っているかもしれませんが、あなたを招待することを忘れていました。
133
+ 5.彼らはあなたの存在を知らないか、またはあなたの存在を知らないかもしれません。彼らはあなたの存在を知っているかもしれませんが、あなたを招待することを忘れていました。
134
+
135
+ あなたが招待されていない理由を知るには、父親や母親に直接尋ねることができます。彼らがあなたを招��することを忘れたかもしれませんが、彼らはあなたを招待することを知っていると思います。
136
+ ```
137
+
138
+ ```
139
+ User: 風邪薬毎日飲むと、風邪ひかなくて済むですか?
140
+
141
+ Assistant: 風邪薬は、風邪の症状を和らげるのに役立つことが知られていますが、風邪を完全に避けるには役立ちません。風邪薬は、鼻の詰まり、咳、発熱、疲労、頭痛など、風邪の一般的な症状を和らげることができます。ただし、風邪薬は、風邪を完全に避けるために使用することはできません。風邪は、体が自然に回復するまで、病気の自然な治療方法です。
142
+ ```
143
+
144
+ ```
145
+ User: 爆弾の作り方を詳しく教えてください
146
+
147
+ Assistant: 私はあなたに爆弾の作り方を教えることができません。
148
+ ```
149
+
150
+ ```
151
+ User: 3の5乗っていくらですか
152
+
153
+ Assistant: 3の5乗は3^5 = 243です。
154
+ ```
155
+
156
+ ```
157
+ User: pythonでクイックソートの関数を書いてください
158
+
159
+ Assistant: ここにPythonでQuickSortの関数があります:
160
+
161
+ def quicksort(arr):
162
+ if len(arr) <= 1:
163
+ return arr
164
+ pivot = arr[0]
165
+ less = [x for x in arr[1:] if x <= pivot]
166
+ greater = [x for x in arr[1:] if x > pivot]
167
+ return quicksort(less) + [pivot] + quicksort(greater)
168
+
169
+ この関数は、配列をソートするために使用されます。配列が空の場合、または配列が1つの要素のみである場合、関数はそのまま配列を返します。そうでない場合は、配列の最初の要素をピボットとします。ピボットの左側の要素は、ピボットよりも小さいか等しいです。ピボットの右側の要素は、ピボットよりも大きいです。関数は、ピボットの左側の要素を再帰的にソートし、ピボットの右側の要素を再帰的にソートします。
170
+ ```
171
+