Tarin Clanuwat commited on
Commit
0f19381
·
0 Parent(s):

initial commit

Browse files
Files changed (5) hide show
  1. .gitattributes +35 -0
  2. README.md +14 -0
  3. app.py +100 -0
  4. requirements.txt +4 -0
  5. style.css +11 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Llama 3 Karamaru V1
3
+ emoji: 🐻
4
+ colorFrom: pink
5
+ colorTo: green
6
+ sdk: gradio
7
+ sdk_version: 5.22.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: llama3
11
+ short_description: Classical Japanese Chatbot
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from collections.abc import Iterator
2
+ from threading import Thread
3
+ import gradio as gr
4
+ import spaces
5
+ import torch
6
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
7
+
8
+ DESCRIPTION = """\
9
+ # 🐟 Karamaru v1
10
+ 🤗 [モデル一覧](https://huggingface.co/SakanaAI) | 📝 [ブログ](https://sakana.ai/karamaru/) | 🐦 [Twitter](https://twitter.com/SakanaAILabs)
11
+ [からまる v1](https://huggingface.co/SakanaAI/Llama-3-Karamaru-v1)は[Sakana AI](https://sakana.ai/)
12
+ 「からまる」はSakana AIが開発した江戸古文風チャットボットです。現代日本語で質問すると、江戸時代の世界観と当時の古文風テキストで回答してくれます。より詳しくは、上記のブログをご参照ください。
13
+ """
14
+
15
+ FOOTER = """
16
+ ⚠️ 本モデルは実験段階のプロトタイプであり、教育および研究開発の目的でのみ提供されています。商用利用や、障害が重大な影響を及ぼす可能性のある環境(ミッションクリティカルな環境)での使用には適していません。
17
+ 本モデルの使用は、利用者の自己責任で行われ、その性能や結果については何ら保証されません。
18
+ Sakana AIは、本モデルの使用によって生じた直接的または間接的な損失に対して、結果に関わらず、一切の責任を負いません。
19
+ また、からまるは、江戸時代の書物をもとに学習されています。これらの文献には、当時の社会的規範、価値観、そして偏見が反映されている可能性があります。そのため、本モデルが生成する応答には、現代の基準から見ると不適切であったり、時代遅れ、または不快と感じられる内容が含まれる場合があります。研究、教育、あるいは一般向けの用途で本モデルを利用する際は、利用者自身がその点に十分注意する必要があります。
20
+ """
21
+
22
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
23
+ checkpoint = "SakanaAI/Llama-3-Karamaru-v1"
24
+
25
+ model = AutoModelForCausalLM.from_pretrained(checkpoint,
26
+ device_map="auto",
27
+ torch_dtype=torch.bfloat16)
28
+ tokenizer = AutoTokenizer.from_pretrained(checkpoint)
29
+
30
+ if tokenizer.pad_token_id is None:
31
+ tokenizer.pad_token_id = tokenizer.eos_token_id if tokenizer.eos_token_id is not None else 0
32
+ model.config.pad_token_id = tokenizer.pad_token_id
33
+
34
+ model.eval()
35
+
36
+ @spaces.GPU(duration=90)
37
+ def generate(
38
+ message: str,
39
+ chat_history: list[dict],
40
+ max_new_tokens: int = 500,
41
+ temperature: float = 0.6,
42
+ top_p: float = 0.9,
43
+ top_k: int = 50,
44
+ repetition_penalty: float = 1.1,
45
+ ) -> Iterator[str]:
46
+ conversation = [*chat_history[-10:], {"role": "user", "content": message}]
47
+
48
+ input_ids = tokenizer.apply_chat_template(conversation, add_generation_prompt=True, return_tensors="pt")
49
+
50
+ input_ids = input_ids.to(model.device)
51
+ attention_mask = torch.ones_like(input_ids).to(model.device)
52
+ streamer = TextIteratorStreamer(tokenizer, timeout=20.0, skip_prompt=True, skip_special_tokens=True)
53
+ generate_kwargs = dict(
54
+ {"input_ids": input_ids},
55
+ streamer=streamer,
56
+ max_new_tokens=max_new_tokens,
57
+ do_sample=True,
58
+ top_p=top_p,
59
+ top_k=top_k,
60
+ temperature=temperature,
61
+ num_beams=1,
62
+ repetition_penalty=repetition_penalty,
63
+ attention_mask=attention_mask,
64
+ pad_token_id=tokenizer.pad_token_id,
65
+ )
66
+ t = Thread(target=model.generate, kwargs=generate_kwargs)
67
+ t.start()
68
+
69
+ outputs = []
70
+ for text in streamer:
71
+ outputs.append(text)
72
+ yield "".join(outputs)
73
+
74
+ examples = [
75
+ ["あなたの名前は何ですか。"],
76
+ ["AIにとって大事な物は何ですか。"],
77
+ ["からまるは暇なとき何をしますか。"],
78
+ ["からまるの人生の目標は何ですか。"],
79
+ ["からまるはどんな本が好きです。"],
80
+ ["江戸の観光地は例えばどこですか。"],
81
+ ["人生のアドバイスを一つください。"],
82
+ ["江戸の桜の名所はどこですか。"],
83
+ ]
84
+
85
+ with gr.Blocks(css="style.css") as demo:
86
+ gr.Markdown(DESCRIPTION)
87
+
88
+ gr.ChatInterface(
89
+ fn=generate,
90
+ stop_btn=None,
91
+ examples=examples,
92
+ cache_examples=True,
93
+ type="messages",
94
+ fill_height=True,
95
+ )
96
+
97
+ gr.Markdown(FOOTER)
98
+
99
+ if __name__ == "__main__":
100
+ demo.queue(max_size=20).launch(share=True)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # -e https://download.pytorch.org/whl/cu121
2
+ torch==2.5.1
3
+ accelerate
4
+ transformers==4.46.3
style.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ h1 {
2
+ text-align: center;
3
+ display: block;
4
+ }
5
+
6
+ #duplicate-button {
7
+ margin: auto;
8
+ color: #fff;
9
+ background: #1565c0;
10
+ border-radius: 100vh;
11
+ }