import gradio as gr import requests import torch from transformers import AutoModel, AutoTokenizer from huggingface_hub import HfApi, hf_hub_download def convert_and_deploy(url, model_name, hf_username, hf_token): # セーフテンソルファイルをダウンロード response = requests.get(url) if response.status_code != 200: return "ファイルのダウンロードに失敗しました。URLを確認してください。" # ファイルを保存 file_path = "model.safetensors" with open(file_path, "wb") as f: f.write(response.content) # モデルを読み込み try: model = AutoModel.from_pretrained("path_to_model", torch_dtype=torch.float16, use_safetensors=True, token=hf_token) model.load_state_dict(torch.load(file_path)) except Exception as e: return f"モデルの読み込みに失敗しました。エラー: {e}" # モデルをfloat16形式で保存 model.save_pretrained(f"{model_name}_float16", torch_dtype=torch.float16) # モデルをHugging Faceにデプロイ api = HfApi() try: api.upload_folder( folder_path=f"{model_name}_float16", repo_id=f"{hf_username}/{model_name}", token=hf_token, path_in_repo=f"{model_name}_float16", create_remote_repo=True ) except Exception as e: return f"モデルのデプロイに失敗しました。エラー: {e}" return "モデルをfloat16に変換し、Hugging Faceにデプロイしました。" # Gradioインターフェースの作成 iface = gr.Interface( fn=convert_and_deploy, inputs=[ gr.Text(label="セーフテンソルURL"), gr.Text(label="モデル名"), gr.Text(label="Hugging Face ユーザー名"), gr.Text(label="Hugging Face Write Token") ], outputs=gr.Text(label="結果"), title="モデルの変換とデプロイ", description="セーフテンソルURL、モデル名、Hugging Face ユーザー名、およびHugging Face Write Tokenを入力して、モデルをfloat16に変換し、Hugging Faceにデプロイします。" ) # インターフェースの起動 iface.launch()