如何在AzureML端点中导入自定义bert_based_model模块?
解决AzureML端点导入自定义bert_based_model类的问题
1. 调整目录结构
确保自定义模型代码与score.py处于可被Python识别的目录结构中,最简单的方式是将自定义类文件和score.py放在同一部署目录下:
./deploy_dir/ ├── score.py ├── bert_based_model.py # 存放你的自定义模型类 └── model.pkl # 已保存的模型文件
如果自定义类涉及多个文件,可整理为Python包结构:
./deploy_dir/ ├── score.py ├── custom_models/ │ ├── __init__.py # 空文件即可,标记为Python包 │ └── bert_based_model.py └── model.pkl
此时在score.py中需按包路径导入:from custom_models.bert_based_model import BertBasedModel
2. 手动添加Python路径(应急方案)
如果不想调整目录,可在score.py开头加入代码,将当前部署目录添加到Python搜索路径:
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) # 之后即可正常导入自定义类 from bert_based_model import BertBasedModel
3. 配置环境依赖文件
创建conda.yml或requirements.txt,明确列出BERT模型依赖的库(如torch、transformers等),确保部署环境能正常运行自定义模型。示例conda.yml:
name: bert-deploy-env channels: - conda-forge dependencies: - python=3.8 - pip: - torch>=1.12.0 - transformers>=4.20.0 - scikit-learn - azureml-defaults
4. 部署时包含所有必要文件
使用AzureML SDK部署时,需将自定义代码、score.py、依赖文件、模型文件全部纳入部署目录。通过InferenceConfig指定源码目录:
from azureml.core.model import InferenceConfig from azureml.core.webservice import AciWebservice inference_config = InferenceConfig( source_directory="./deploy_dir", entry_script="score.py", conda_file="conda.yml" ) aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=2) service = Model.deploy( workspace=your_workspace, name="bert-model-endpoint", models=[your_registered_model], inference_config=inference_config, deployment_config=aci_config ) service.wait_for_deployment(show_output=True)
5. 本地预验证
部署前先在本地运行score.py,验证自定义类导入和模型加载是否正常,提前排查问题,避免部署后重复调试。
内容的提问来源于stack exchange,提问作者tammuz
相关产品推荐
相关产品推荐

