Sakalti commited on
Commit
5c7acaf
·
verified ·
1 Parent(s): 8c83344

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -26
app.py CHANGED
@@ -1,27 +1,31 @@
 
 
 
1
  import gradio as gr
2
  import requests
3
  import torch
4
  from transformers import AutoModel, AutoConfig
5
- from huggingface_hub import HfApi, login
6
  import safetensors
7
  import os
8
 
9
- def convert_and_deploy(url, repo_id, hf_token):
10
  # Hugging Face Hubにログイン
11
  try:
12
- login(token=hf_token)
13
  except Exception as e:
14
  return f"Hugging Face Hubへのログインに失敗しました。エラー: {e}"
15
 
16
  # セーフテンソルファイルをダウンロード
17
- response = requests.get(url)
18
- if response.status_code != 200:
19
- return "ファイルのダウンロードに失敗しました。URLを確認してください。"
20
-
21
- # ファイルを保存
22
- file_path = "model.safetensors"
23
- with open(file_path, "wb") as f:
24
- f.write(response.content)
 
25
 
26
  # ファイルの存在を確認
27
  if not os.path.exists(file_path):
@@ -37,7 +41,7 @@ def convert_and_deploy(url, repo_id, hf_token):
37
  try:
38
  # モデルの構成を取得
39
  model_name = repo_id.split('/')[-1] # モデル名を取得
40
- config = AutoConfig.from_pretrained(model_name, token=hf_token)
41
 
42
  # モデルを構成に基づいて初期化
43
  model = AutoModel.from_config(config, torch_dtype=torch.float16)
@@ -66,7 +70,7 @@ def convert_and_deploy(url, repo_id, hf_token):
66
  api.upload_folder(
67
  folder_path=f"{model_name}_float16",
68
  repo_id=repo_id,
69
- token=hf_token,
70
  path_in_repo=f"{model_name}_float16",
71
  create_remote_repo=True
72
  )
@@ -76,17 +80,18 @@ def convert_and_deploy(url, repo_id, hf_token):
76
  return "モデルをfloat16に変換し、Hugging Faceにデプロイしました。"
77
 
78
  # Gradioインターフェースの作成
79
- iface = gr.Interface(
80
- fn=convert_and_deploy,
81
- inputs=[
82
- gr.Text(label="セーフテンソルURL"),
83
- gr.Text(label="Hugging Face リポジトリID (ユーザー名/モデル名)"),
84
- gr.Text(label="Hugging Face Write Token")
85
- ],
86
- outputs=gr.Text(label="結果"),
87
- title="モデルの変換とデプロイ",
88
- description="セーフテンソルURL、Hugging Face リポジトリID (ユーザー名/モデル名)、およびHugging Face Write Tokenを入力して、モデルをfloat16に変換し、Hugging Faceにデプロイします。"
89
- )
 
90
 
91
- # インターフェースの起動
92
- iface.launch()
 
1
+ # 必要なライブラリのインストール
2
+ # !pip install gradio huggingface_hub requests transformers safetensors torch
3
+
4
  import gradio as gr
5
  import requests
6
  import torch
7
  from transformers import AutoModel, AutoConfig
8
+ from huggingface_hub import HfApi, HfFolder
9
  import safetensors
10
  import os
11
 
12
+ def convert_and_deploy(url, repo_id, hf_write_token):
13
  # Hugging Face Hubにログイン
14
  try:
15
+ login(token=hf_write_token)
16
  except Exception as e:
17
  return f"Hugging Face Hubへのログインに失敗しました。エラー: {e}"
18
 
19
  # セーフテンソルファイルをダウンロード
20
+ try:
21
+ response = requests.get(url, stream=True)
22
+ response.raise_for_status()
23
+ file_path = "model.safetensors"
24
+ with open(file_path, 'wb') as f:
25
+ for chunk in response.iter_content(chunk_size=8192):
26
+ f.write(chunk)
27
+ except requests.exceptions.RequestException as e:
28
+ return f"ファイルのダウンロードに失敗しました。エラー: {e}"
29
 
30
  # ファイルの存在を確認
31
  if not os.path.exists(file_path):
 
41
  try:
42
  # モデルの構成を取得
43
  model_name = repo_id.split('/')[-1] # モデル名を取得
44
+ config = AutoConfig.from_pretrained(model_name, token=hf_write_token)
45
 
46
  # モデルを構成に基づいて初期化
47
  model = AutoModel.from_config(config, torch_dtype=torch.float16)
 
70
  api.upload_folder(
71
  folder_path=f"{model_name}_float16",
72
  repo_id=repo_id,
73
+ token=hf_write_token,
74
  path_in_repo=f"{model_name}_float16",
75
  create_remote_repo=True
76
  )
 
80
  return "モデルをfloat16に変換し、Hugging Faceにデプロイしました。"
81
 
82
  # Gradioインターフェースの作成
83
+ with gr.Blocks() as demo:
84
+ gr.Markdown("# モデルの変換とデプロイ")
85
+
86
+ download_url = gr.Textbox(label="セーフテンソルURL", placeholder="セーフテンソルファイルのダウンロードリンクを入力してください")
87
+ hf_write_token = gr.Textbox(label="Hugging Face Write Token", placeholder="Hugging Faceの書き込みトークンを入力してください", type="password")
88
+ repo_id = gr.Textbox(label="Hugging Face リポジトリID (ユーザー名/モデル名)", placeholder="Hugging FaceのリポジトリIDを入力してください(例:ユーザー名/モデル名)")
89
+
90
+ output = gr.Textbox(label="結果")
91
+
92
+ upload_button = gr.Button("ダウンロードしてデプロイ")
93
+
94
+ upload_button.click(convert_and_deploy, inputs=[download_url, repo_id, hf_write_token], outputs=output)
95
 
96
+ # アプリの実行
97
+ demo.launch()