You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AzureML Python SDK V2提交作业遇文件超100MB问题求助

解决方案

1. 先排查.amlignore的问题

  • 确认.amlignore语法和.gitignore完全一致,别写错大文件的路径,相对路径要和提交作业时指定的code目录对应
  • 用find . -size +90M在本地目录扫一遍所有大文件,确保这些文件的路径都写进了.amlignore,别漏了隐藏的缓存、数据集文件
  • 注意:.amlignore必须放在你指定的code目录的根目录,放错位置等于白加

2. 用AzCopy传大文件到数据存储,作业直接引用

AzCopy不是用来提交作业的,而是帮你把大文件传到Azure ML的数据存储,作业里直接用存储路径,不用打包上传:

  • 先用AzCopy把大文件传到Azure ML的数据存储:
    azcopy copy "/本地大文件路径" "https://<存储账户名>.blob.core.windows.net/<容器名>/<目标路径>?<SAS令牌>"
    
    SAS令牌可以在Azure ML工作室的「数据存储」页面生成,直接复制即可
  • 然后在作业代码里用SDK加载存储里的文件:
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(DefaultAzureCredential(), subscription_id="<你的订阅ID>", resource_group_name="<资源组名>", workspace_name="<工作区名>")
    datastore = ml_client.datastores.get("<数据存储名称>")
    # 生成数据URI
    data_uri = f"azureml://datastores/{datastore.name}/paths/<目标路径>/大文件名"
    # 代码里直接用这个URI代替本地文件路径
    
  • 提交作业时,code参数只放必要的代码文件,大文件不用打包进去

3. 直接用DevOps仓库作为作业代码源

既然代码已经在DevOps仓库,没必要本地打包上传,直接让Azure ML从DevOps拉取:

  • 作业定义里用GitConfiguration指定仓库信息:
    from azure.ai.ml.entities import CommandJob, GitConfiguration
    
    git_config = GitConfiguration(
        repository="<你的DevOps仓库URL>",
        branch="<要拉取的分支>",
        path="<仓库中代码的相对路径>"
    )
    
    command_job = CommandJob(
        code=git_config,
        command="python train.py",
        environment="<你的环境名称>:<版本>",
        compute="<计算集群名称>"
    )
    
    ml_client.jobs.create_or_update(command_job)
    
    这样Azure ML直接从DevOps拉代码,完全绕开本地上传大文件的问题

4. 拆分大文件或用Git LFS管理

如果大文件是数据集、模型这类,要么拆成小文件,要么在DevOps仓库启用Git LFS管理大文件,这样本地和Azure ML拉取时都只会处理必要的文件,不会把大文件塞进作业上传包

内容的提问来源于stack exchange,提问作者Niki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:22:40