问题一:基于PTTS-basemodel微调时报错InvalidProtobuf: [ONNXRuntime
用的付费的
8核 32GB 显存16G 预装 ModelScope Library 预装镜像 ubuntu20.04-cuda11.3.0-py38-torch1.11.0-tf1.15.5-1.6.1
这个环境
InvalidProtobuf Traceback (most recent call last) Cell In[10], line 33 22 kwargs = dict( 23 model=pretrained_model_id, # 指定要finetune的模型 24 model_revision = "v1.0.6", (...) 27 train_type=train_info # 指定要训练类型及参数 28 ) 30 trainer = build_trainer(Trainers.speech_kantts_trainer, 31 default_args=kwargs) ---> 33 trainer.train() File /opt/conda/lib/python3.8/site-packages/modelscope/trainers/audio/tts_trainer.py:229, in KanttsTrainer.train(self, *args, **kwargs) 226 ignore_pretrain = kwargs['ignore_pretrain'] 228 if TtsTrainType.TRAIN_TYPE_SAMBERT in self.train_type or TtsTrainType.TRAIN_TYPE_VOC in self.train_type: --> 229 self.prepare_data() 230 if TtsTrainType.TRAIN_TYPE_BERT in self.train_type: 231 self.prepare_text() File /opt/conda/lib/python3.8/site-packages/modelscope/trainers/audio/tts_trainer.py:205, in KanttsTrainer.prepare_data(self) 202 audio_config = self.model.get_voice_audio_config_path( 203 self.speaker) 204 se_model = self.model.get_voice_se_model_path(self.speaker) --> 205 self.audio_data_preprocessor(self.raw_dataset_path, self.data_dir, 206 audio_config, self.speaker, 207 self.lang_type, self.skip_script, 208 se_model) File /opt/conda/lib/python3.8/site-packages/modelscope/preprocessors/tts.py:36, in KanttsDataPreprocessor.__call__(self, data_dir, output_dir, audio_config_path, speaker_name, target_lang, skip_script, se_model) 28 def __call__(self, 29 data_dir, 30 output_dir, (...) 34 skip_script=False, 35 se_model=None): ---> 36 self.do_data_process(data_dir, output_dir, audio_config_path, 37 speaker_name, target_lang, skip_script, se_model) File /opt/conda/lib/python3.8/site-packages/modelscope/preprocessors/tts.py:56, in KanttsDataPreprocessor.do_data_process(self, datadir, outputdir, audio_config, speaker_name, targetLang, skip_script, se_model) 53 if not os.path.exists(audio_config): 54 raise TtsDataPreprocessorAudioConfigNotExistsException( 55 'Preprocessor: audio config not exists') ---> 56 process_data(datadir, outputdir, audio_config, speaker_name, 57 targetLang, skip_script, se_model) File /opt/conda/lib/python3.8/site-packages/kantts/preprocess/data_process.py:198, in process_data(voice_input_dir, voice_output_dir, audio_config, speaker_name, targetLang, skip_script, se_model, split_ratio) 196 if se_enable: 197 sep = SpeakerEmbeddingProcessor() --> 198 sep.process( 199 voice_output_dir, 200 se_model, 201 ) 202 logging.info("Processing speaker embedding done.") 204 logging.info("Processing done.") File /opt/conda/lib/python3.8/site-packages/kantts/preprocess/se_processor/se_processor.py:67, in SpeakerEmbeddingProcessor.process(self, src_voice_dir, se_onnx) 65 opts = onnxruntime.SessionOptions() 66 opts.intra_op_num_threads = 1 ---> 67 sess = onnxruntime.InferenceSession(se_onnx, sess_options=opts) 69 wav_dir = os.path.join(src_voice_dir, "wav") 70 se_dir = os.path.join(src_voice_dir, "se") File /opt/conda/lib/python3.8/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py:383, in InferenceSession.__init__(self, path_or_bytes, sess_options, providers, provider_options, **kwargs) 380 disabled_optimizers = kwargs["disabled_optimizers"] if "disabled_optimizers" in kwargs else None 382 try: --> 383 self._create_inference_session(providers, provider_options, disabled_optimizers) 384 except (ValueError, RuntimeError) as e: 385 if self._enable_fallback: File /opt/conda/lib/python3.8/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py:424, in InferenceSession._create_inference_session(self, providers, provider_options, disabled_optimizers) 422 session_options = self._sess_options if self._sess_options else C.get_default_session_options() 423 if self._model_path: --> 424 sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model) 425 else: 426 sess = C.InferenceSession(session_options, self._model_bytes, False, self._read_config_from_model) InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOBUF : Load model from ./pretrain_work_dir/orig_model/basemodel_16k/speaker_embedding/se.onnx failed:Protobuf parsing failed.
参考回答:
确认您的输入数据是否符合 ONNX 格式。ONNX 格式要求输入数据为 Tensor 类型,并且需要指定正确的形状和数据类型。您可以使用以下代码检查您的输入数据:
python
Copy
import torch
import numpy as np
假设您的输入数据为 input_data
input_data = np.random.rand(1, 3, 224, 224) # 假设输入形状为 (1, 3, 224, 224)
input_tensor = torch.from_numpy(input_data).float() # 将 numpy 数组转换为 PyTorch 张量,并指定数据类型为 float
输出张量的形状和数据类型
print(input_tensor.shape)
print(input_tensor.dtype)
如果您的输入数据不符合要求,请根据您的具体情况进行修改。 检查您的模型是否符合 ONNX 格式。您可以使用 PyTorch 提供的 torch.onnx.export() 函数将 PyTorch 模型导出为 ONNX 格式,并使用 ONNX 官方提供的工具检查导出的 ONNX 模型是否符合规范。例如,您可以使用以下命令检查模型是否符合规范: bash Copy onnx-check model.onnx
其中 model.onnx
是您导出的 ONNX 模型文件名。如果模型不符合规范,则需要修改模型代码以确保其符合规范。
确认您使用的 ONNX 运行时是否正确安装。您可以通过以下命令检查 ONNX 运行时是否正确安装:
python
Copy
import onnxruntime
检查 ONNX 运行时版本
print(onnxruntime.version)
创建 ONNX 运行时会话
sess = onnxruntime.InferenceSession('model.onnx')
```
其中 'model.onnx'
是您导出的 ONNX 模型文件名。如果 ONNX 运行时没有正确安装,则需要重新安装 ONNX 运行时。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/526223?spm=a2c6h.14164896.0.0.73612605SRfTl1
问题二:请问,ModelScope文档上的镜像要怎么使用?镜像已pull下来,怎么用起来呢?
请问,ModelScope文档上的镜像要怎么使用? 镜像已pull下来,怎么用起来呢?
参考回答:
docker run
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/512685?spm=a2c6h.14164896.0.0.73612605SRfTl1
问题三:docker desktop 中如何使用ModelScope官方镜像? 谢谢
docker desktop 中如何使用ModelScope官方镜像? 谢谢
参考回答:
docker run registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope -d docker ps 找到 container_id docker exec -it container_id bash 进入。 或者前往notebook直接使用,方便快捷
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/493602?spm=a2c6h.14164896.0.0.73612605SRfTl1
问题四:你好,自己服务器上面如何使用你们给的ModelScope官方镜像?
你好,自己服务器上面如何使用你们给的ModelScope官方镜像?
参考回答:
如果您想在自己的服务器上使用 ModelScope 官方镜像,可以按照以下步骤进行操作:
在您的服务器上安装 Docker,如果您已经安装了 Docker,可以跳过此步骤。 下载 ModelScope 官方镜像。您可以在 ModelScope 的官方网站上找到官方镜像的下载链接,例如:
docker pull modelscope/modelscope:latest
运行 ModelScope 官方镜像。您可以使用以下命令来启动 ModelScope 官方镜像:
docker run -it --rm -p 8080:8080 modelscope/modelscope:latest
其中,-p 参数用于将容器内部的端口映射到主机上的端口,可以根据需要进行调整。例如,如果您想将容器内部的 8080 端口映射到主机上的 8888 端口,可以使用以下命令:
docker run -it --rm -p 8888:8080 modelscope/modelscope:latest
访问 ModelScope。启动容器后,您可以在浏览器中访问 ModelScope 的 Web 界面,例如 http://localhost:8080。在 Web 界面中,您可以上传模型、运行模型评估、查看模型性能等。
需要注意的是,如果您使用的是自己的服务器,可能需要对防火墙和网络配置进行调整,以确保 ModelScope 的正常运行。另外,如果您需要在多台服务器上使用 ModelScope,可以考虑使用 Docker Swarm 或 Kubernetes 等容器编排工具,以实现分布式部署和管理。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/497292?spm=a2c6h.14164896.0.0.73612605SRfTl1