1 Star 0 Fork 0

ApulisPlatform / init-container

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT
容器编译指令
- docker build . -t init-container:v1.0
- docker tag init-container:v1.0 harbor.apulis.cn:8443/develop/apulistech/init-container:v1.0
- docker push harbor.apulis.cn:8443/develop/apulistech/init-container:v1.0

JOB启动环境说明  
    initContainer       
    prestart与start两个文件夹会被拷贝到业务容器的/prestart与/start两个文件夹当中     
    /pod.env统一存放镜像的初始化环境变量,由镜像制作方提供

JOB环境设置    
    业务方调用job-scheduler API创建JOB    
- 如果API中PrestartScripts参数为空,则POD启动过程不执行环境配置,直接按root身份启动CMD      
- 如果API中PrestartScripts参数非空,则POD启动过程执行环境配置。此过程会逐个调用/prestart文件夹中的一个或多个可执行文件,最后执行/start/start.sh 。
   start.sh脚本代用了用户参数CMD,但是以用户身份(CreateJob Owner字段)来执行。  

预置环境变量:
   AILAB_ADDR          http://ai-lab.default:10000/api/v1   用于访问实验管理数据,由业务方设置
   AILAB_LAB_ID        123                                  本次job所属实验ID
   APULIS_CLUSTER_ID   {xxx-xxx-xxxxxxx}                    该集群cluster标识
   AILAB_TOKEN         "xxxxx.ffff"                         用户创建job时的token
   AILAB_AFFINITY_JOB_ID    xxxx                            设置了亲和性的目标job id
   AILAB_AFFINITY_TASK_NAME master|worker                   设置了亲和性的目标task name (如果为单节点任务,无此环境变量)
   AILAB_JOB_TYPE      dev|train|eval                       预定义job类型
   DIST_JOB_ROLE       master|worker|ps                     [实验性质]预定义分布式job角色

   访问job详情使用: $AILAB_ADDR/labs/$AILAB_LAB_ID/runs/$JOB_ID

   POD_NAME      POD名称 
   POD_IP        POD IP 

   JOB_ID        任务ID
   USER_NAME     用户名

   PRESTART_SCRIPTS 启动脚本列表,空格符隔开
   JOB_CMD       任务启动命令    

代码开发预置环境变量: 由应用层(aiarts设置)
   DEV_PROJECT_CODE     /home/{username}/code
   DEV_PROJECT_OUTPUT   /home/{username}/outputs
   DEV_PROJECT_REPO     xxxxxxxx                      项目对应的repo ID  
   DEV_USERDATA_DIR     /home/{username}/userdata
   DEV_TEAMDATA_DIR     /home/{username}/teamdata
   DEV_ADHUB_DIR        /home/{username}/adhub
   DEV_USER_CONDA       /home/{username}/conda        [实验性质]


资源类型定义
   const (
        AILAB_RESOURCE_TYPE_MODEL   = "model"         //模型工厂资源
        AILAB_RESOURCE_TYPE_DATASET = "dataset"       //数据集资源
        AILAB_RESOURCE_TYPE_MLRUN   = "mlrun"         //实验管理中的run
        AILAB_RESOURCE_TYPE_OUTPUT  = "*"             //本次run的输出存储 
        AILAB_RESOURCE_TYPE_CODE    = "code"          //代码开发资源
        AILAB_RESOURCE_TYPE_ENGINE  = "engine"        //镜像中心资源, experiment
)

实验管理启动训练/评估命令:  iqi_launcher --codePath {{ model/code }}

实验管理需要的资源构造方式:

        data_path            ===>    data_path: {  type:"dataset",  id:"数据集id" , version:"数据集版本" }
        pretrained_model     ====>   pretrained_model: {  type:"mlrun" , id:"上次训练的runId"   }
        output_path          ====>   output_path:{type:"*"}
        checkpoint_path      ====>   checkpoint_path:{type:"#train" }
        labels               ====>   取数据集 label
        device_num           ====>   用户输入number
预置模型训练/评估总会加入一个预置模型资源:
        model:  {  id:"预置模型ID" , version:"预置模型版本" }
 


工业质检平台 sysParams 参数入库时需要转换:
训练:
      data_path   
      pretrained_model
      train_output  ==>     output_path
评估:
     train_output  ===>   checkpoint_path
     eval_output   ===>   output_path



系统预置镜像随安装包部署安装,名字固定:
      ascend-mindinsight:1.2.0       (ascend-mindinsight/arm64:1.2.0      ascend-mindinsight/amd64:1.2.0)
      ascend-ms-train:21.0.rc1       (ascend-ms-train/arm64:21.0.rc1      ascend-ms-train/amd64:21.0.rc1 )
      
上云: 
     1. job的flags 值中 AILAB_RUN_FLAGS_USE_CLOUD  = 0x40  bit位设置了表示在modelArts云端训练/评估;否则为本地训练/评估
     2. modelArts的jobName与ai-lab分配的jobId关联


pod  ssh安装配置:
     1. init-ssh 根据传入环境变量:  AILAB_SSH_PASSWD xxxxx   非空表示需要安装ssh服务,开放22端口,并以此随机密码初始化ssh登录用户密码(仅主节点)
     2. 修改/etc/ssh/ssh_config    增加StrictHostKeyChecking no 不提示known_hosts (自动化ssh命令需要)
     3. launcher根据当前用户名和token调用AAA接口获得当前用户的public key ,追加写入 ~/.ssh/authorized_keys
     4. 分布式podgroup, 主从ssh互相信任待定

dev pod 代码仓git clone ssh方式安装配置:
     1. 调用代码管理接口根据code ID 获得repo的访问地址和私钥  ssh_url ,secret_key 
     2. 创建~/.ssh/repos/${DEV_PROJECT_REPO},写入secret_key,并chmod 600 
     3. 追加写入~/.ssh/config  增加一行 echo "IdentityFile ~/.ssh/repos/${DEV_PROJECT_REPO}" >> ~/.ssh/config 引用该私钥
     4. 根据当前用户,当前repo初始化code目录如果未初始化   git clone $ssh_url ~/${USER_NAME}/code
     5. 检查 juypter是否安装,如已安装启动juytper,根目录设置为 /home/${USER_NAME};如未安装报错退出
The MIT License (MIT) Copyright © 2021 <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

任务初始化工具 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/apulisplatform/init-container.git
git@gitee.com:apulisplatform/init-container.git
apulisplatform
init-container
init-container
v1.6.0

搜索帮助

344bd9b3 5694891 D2dac590 5694891