質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

598閲覧

sagemakerでデプロイ時にエラー発生

masahiroview

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/09/16 05:58

編集2022/09/20 01:59

前提

awsのsagemakerにて音響モデルを用いたTTSシステムを作っています。

実現したいこと

sagemakerで音響モデルをデプロイしたいと考えています。

発生している問題・エラーメッセージ

デプロイ時に下記のエラーが繰り返し発生します。
Please specify --force/-f option to overwrite the model archive output file.
See -h/--help for more details./.sagemaker/mms/models/model
ERROR - %s already exists.

※以下、デプロイ用コード

from sagemaker import get_execution_role from sagemaker.pytorch.model import PyTorchModel role = get_execution_role() pytorch_model = PyTorchModel(model_data='s3://sagemaker-alterly/model.tar.gz', role=role, framework_version="1.3.1", py_version="py3", entry_point='inference.py') predictor = pytorch_model.deploy(instance_type='ml.t2.2xlarge', initial_instance_count=1)

※entry_pointの推論コード

iference.py

1import os 2import time 3import torch 4import pyopenjtalk 5from espnet2.bin.tts_inference import Text2Speech 6import matplotlib.pyplot as plt 7from espnet2.tasks.tts import TTSTask 8from espnet2.text.token_id_converter import TokenIDConverter 9import numpy as np 10 11import argparse 12import text_processing as texp 13import os 14 15import boto3 16 17prosodic = True 18 19model_dir = "model/" 20vocoder_dir = "vocoder/" 21CONTENT_TYPE = "text/plain" 22 23train_config = "model/config.yaml" 24model_file = "model/50epoch.pth" 25# train_config="" 26# model_file=" 27 28vocoder_tag = "parallel_wavegan/jsut_hifigan.v1" 29# ボコーダを指定 30vocoder_config = "vocoder/config.yaml" 31vocoder_file = "vocoder/50epoch.pth" 32 33 34def model_fn(model_dir): 35 print(model_dir + "config.yaml") 36 print(model_dir + "100epoch.pth") 37 model = Text2Speech.from_pretrained( 38 train_config=model_dir + "config.yaml", 39 model_file=model_dir + "100epoch.pth", 40 vocoder_tag=vocoder_tag, 41 device="cpu", 42 speed_control_alpha=1.0, 43 noise_scale=0.333, 44 noise_scale_dur=0.333, 45 ) 46 47 return model 48 49 50def input_fn(request_body, content_type=CONTENT_TYPE): 51 input_data = "あいうえお" 52 return input_data 53 54 55def predict_fn(input_data, model): 56 import torch 57 import os 58 import numpy as np 59 60 x = "デモテキスト" 61 62 # model, train_args = TTSTask.build_model_from_file( 63 # train_config, model_file, "cuda" 64 # ) 65 66 token_id_converter = TokenIDConverter( 67 token_list=model.train_args.token_list, 68 unk_symbol="<unk>", 69 ) 70 71 text = x 72 if prosodic: 73 tokens = texp.a2p(x) 74 text_ints = token_id_converter.tokens2ids(tokens) 75 text = np.array(text_ints) 76 else: 77 print("\npyopenjtalk_accent_with_pauseによる解析結果:") 78 print(texp.text2yomi(x), "\n") 79 80 # synthesis 81 with torch.no_grad(): 82 start = time.time() 83 data = model(text) 84 wav = data["wav"] 85 # print(text2speech.preprocess_fn("<dummy>",dict(text=x))["text"]) 86 rtf = (time.time() - start) / (len(wav) / model.fs) 87 print(f"RTF = {rtf:5f}") 88 89 if not os.path.isdir("generated_wav"): 90 os.makedirs("generated_wav") 91 92 # let us listen to generated samples 93 from IPython.display import display, Audio 94 import numpy as np 95 #display(Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs)) 96 #Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs) 97 np_wav = wav.view(-1).cpu().numpy() 98 99 fs = 48000 100 print("サンプリングレート", fs, "で出力します。") 101 from scipy.io.wavfile import write 102 samplerate = fs 103 t = np.linspace(0., 1., samplerate) 104 amplitude = np.iinfo(np.int16).max 105 data = amplitude * np_wav/np.max(np.abs(np_wav)) 106 write("espnet/egs2/jsut/tts1/generated_wav/"+x + 107 ".wav", samplerate, data.astype(np.int16)) 108 print("\n\n\n") 109 110 # バケットへの接続 111 s3 = boto3.resource('s3') 112 bucket = s3.Bucket('alterly-source') 113 bucket.upload_file("espnet/egs2/jsut/tts1/generated_wav/" + 114 x + ".wav", "source/"+x+".wav") 115 116 x = "exit" 117 118 119input_object = input_fn("あいうえお", "text/plain") 120model = model_fn(model_dir) 121prediction = predict_fn(input_object, model)

補足情報

圧縮前のディレクトリ構造は下記です。
イメージ説明

こちらをmodel.tar.gzに圧縮してs3に設置しています。

急ぎの案件のため、他サイトでも相談させてもらっています。
進捗があった際にはこちらにも共有いたします。
https://ja.stackoverflow.com/questions/91142/sagemaker%e7%92%b0%e5%a2%83%e3%81%ab%e3%81%a6%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%ab%e5%a4%b1%e6%95%97%e3%81%99%e3%82%8b

対処方法をご存知の方がいましたら、ご教授いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2022/09/16 06:07

エラーメッセージの内容は把握していますか?
masahiroview

2022/09/17 02:59 編集

ご指摘ありがとうございます! エラーメッセージの内容については、「発生している問題・エラーメッセージ」の項目に記載しております。 ●発生している問題・エラーメッセージ Please specify --force/-f option to overwrite the model archive output file. See -h/--help for more details./.sagemaker/mms/models/model ERROR - %s already exists. 以下、google翻訳での和訳も記載いたします。 ・--force/-f オプションを指定して、モデル アーカイブ出力ファイルを上書きしてください。 ・詳細については、-h/--help を参照してください。/.sagemaker/mms/models/model ・エラー - %s は既に存在します。 その他、必要な情報等ありましたらご指摘ください。 よろしくお願いいたします。
masahiroview

2022/09/17 03:14

↑について補足です こちらでの認識として、「モデルの上書きができないためにエラーが発生している」と考えています。 ただし、モデルを上書きするような指定をこちらではしていないため、なぜこのようなエラーが発生するのかわからない、というのが現状です・・・。
masahiroview

2022/09/17 03:53

補足2です entry_pointの推論コードを追記しました。
guest

回答1

0

自己解決

自己解決しました。
下記のコードのflamework_versionとpy_versionを修正したところ改善しました。

誤:pytorch_model = PyTorchModel(model_data='s3://sagemaker-alterly/model.tar.gz',
role=role,
framework_version="1.3.1",
py_version="py3",
entry_point='inference.py')

正:pytorch_model = PyTorchModel(model_data='s3://sagemaker-alterly/model.tar.gz',
role=role,
framework_version="1.12",
py_version="py38",
entry_point='inference.py')

コメント等いただいた方、お手数おかけして失礼しました。
誠にありがとうございました。

投稿2022/09/20 03:14

masahiroview

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問