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

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

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

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

AWS(Amazon Web Services)

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

解決済

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

masahiroview
masahiroview

総合スコア10

Python 3.x

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

AWS(Amazon Web Services)

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

1回答

0リアクション

0クリップ

197閲覧

投稿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

import os import time import torch import pyopenjtalk from espnet2.bin.tts_inference import Text2Speech import matplotlib.pyplot as plt from espnet2.tasks.tts import TTSTask from espnet2.text.token_id_converter import TokenIDConverter import numpy as np import argparse import text_processing as texp import os import boto3 prosodic = True model_dir = "model/" vocoder_dir = "vocoder/" CONTENT_TYPE = "text/plain" train_config = "model/config.yaml" model_file = "model/50epoch.pth" # train_config="" # model_file=" vocoder_tag = "parallel_wavegan/jsut_hifigan.v1" # ボコーダを指定 vocoder_config = "vocoder/config.yaml" vocoder_file = "vocoder/50epoch.pth" def model_fn(model_dir): print(model_dir + "config.yaml") print(model_dir + "100epoch.pth") model = Text2Speech.from_pretrained( train_config=model_dir + "config.yaml", model_file=model_dir + "100epoch.pth", vocoder_tag=vocoder_tag, device="cpu", speed_control_alpha=1.0, noise_scale=0.333, noise_scale_dur=0.333, ) return model def input_fn(request_body, content_type=CONTENT_TYPE): input_data = "あいうえお" return input_data def predict_fn(input_data, model): import torch import os import numpy as np x = "デモテキスト" # model, train_args = TTSTask.build_model_from_file( # train_config, model_file, "cuda" # ) token_id_converter = TokenIDConverter( token_list=model.train_args.token_list, unk_symbol="<unk>", ) text = x if prosodic: tokens = texp.a2p(x) text_ints = token_id_converter.tokens2ids(tokens) text = np.array(text_ints) else: print("\npyopenjtalk_accent_with_pauseによる解析結果:") print(texp.text2yomi(x), "\n") # synthesis with torch.no_grad(): start = time.time() data = model(text) wav = data["wav"] # print(text2speech.preprocess_fn("<dummy>",dict(text=x))["text"]) rtf = (time.time() - start) / (len(wav) / model.fs) print(f"RTF = {rtf:5f}") if not os.path.isdir("generated_wav"): os.makedirs("generated_wav") # let us listen to generated samples from IPython.display import display, Audio import numpy as np #display(Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs)) #Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs) np_wav = wav.view(-1).cpu().numpy() fs = 48000 print("サンプリングレート", fs, "で出力します。") from scipy.io.wavfile import write samplerate = fs t = np.linspace(0., 1., samplerate) amplitude = np.iinfo(np.int16).max data = amplitude * np_wav/np.max(np.abs(np_wav)) write("espnet/egs2/jsut/tts1/generated_wav/"+x + ".wav", samplerate, data.astype(np.int16)) print("\n\n\n") # バケットへの接続 s3 = boto3.resource('s3') bucket = s3.Bucket('alterly-source') bucket.upload_file("espnet/egs2/jsut/tts1/generated_wav/" + x + ".wav", "source/"+x+".wav") x = "exit" input_object = input_fn("あいうえお", "text/plain") model = model_fn(model_dir) prediction = 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

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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の推論コードを追記しました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

AWS(Amazon Web Services)

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