nyasukun commited on
Commit
c0284c2
·
verified ·
1 Parent(s): 5741968

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -21
app.py CHANGED
@@ -1,31 +1,38 @@
 
1
  import gradio as gr
2
- from transformers import pipeline
 
3
 
4
- # 1. テキスト生成モデルの準備(DistilGPT2を使用)
5
- # ZeroGPU環境ではGPUが無いのでCPUで動作。DistilGPT2は小型でCPUでも動作可能​:contentReference[oaicite:2]{index=2}。
 
 
 
6
  generator = pipeline(
7
- "text-generation",
8
- model="distilgpt2", # 軽量な事前学習済みモデル
9
- return_full_text=False # プロンプト部分を含めず新たに生成したテキストのみ返す
 
 
 
10
  )
11
 
12
- # 2. ユーザー入力に対してテキスト生成を行う関数の定義
 
13
  def generate_text(prompt):
14
- # max_new_tokensで新規生成する単語数を制限(例: 最大50トークン)
15
- result = generator(prompt, max_new_tokens=50)[0]["generated_text"]
16
- return result
 
17
 
18
- # 3. Gradioインターフェイスの構築
19
- # テキストボックスを入力と出力に設定し、generate_text関数を呼び出すシンプルなUIを構築
20
  demo = gr.Interface(
21
- fn=generate_text,
22
- inputs=gr.components.Textbox(lines=4, label="入力プロンプト"),
23
- outputs=gr.components.Textbox(lines=5, label="生成テキスト"),
24
- title="ZeroGPU対応: テキスト生成デモ",
25
- description="プロンプトを入力すると、DistilGPT2モデルが続きを生成します。"
26
  )
27
 
28
- # 4. アプリの起動(Spaces環境ではlaunch()不要だが、ローカル実行時には必要)
29
- if __name__ == "__main__":
30
- demo.launch()
31
-
 
1
+ import spaces
2
  import gradio as gr
3
+ from transformers import AutoTokenizer, pipeline
4
+ import torch
5
 
6
+ # 使用するモデル名(Falcon-7B-Instructを例に使用)
7
+ model_name = "tiiuae/falcon-7b-instruct"
8
+
9
+ # トークナイザとテキスト生成パイプラインの準備
10
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
11
  generator = pipeline(
12
+ "text-generation",
13
+ model=model_name,
14
+ tokenizer=tokenizer,
15
+ torch_dtype=torch.bfloat16, # モデルをbfloat16精度でロード(メモリ節約)
16
+ trust_remote_code=True, # モデルのリポジトリ内の追加コードを信頼して読み込む
17
+ device_map="auto" # 利用可能なGPUに自動割り当て(ZeroGPU環境ではA100を使用)
18
  )
19
 
20
+ # GPUを利用する推論関数を定義(ZeroGPUのためデコレータを使用)
21
+ @spaces.GPU
22
  def generate_text(prompt):
23
+ # プロンプトからテキストを生成し、結果文字列を返す
24
+ result = generator(prompt, max_new_tokens=100, do_sample=True)
25
+ generated = result[0]["generated_text"]
26
+ return generated
27
 
28
+ # Gradioインタフェースの構築(テキスト入力→テキスト出力)
 
29
  demo = gr.Interface(
30
+ fn=generate_text,
31
+ inputs=gr.Textbox(lines=3, label="入力プロンプト"),
32
+ outputs=gr.Textbox(label="生成されたテキスト"),
33
+ title="Falcon-7B-Instruct テキスト生成デモ",
34
+ description="プロンプトを入力すると、大規模言語モデルが続きのテキストを生成します。"
35
  )
36
 
37
+ # アプリの起動(Spaces上ではこれによりサービスが公開される)
38
+ demo.launch()