环境变量使用
更新时间:
环境变量用于从环境中传递数据,任务中可以使用的环境变量通过命令行传递数据到任务实例中,开发环境中可以使用环境变量解析环境数据,比如数据读取的地址、数据输出的地址等。
说明
- 使用 $taskrole 环境变量时,任务角色1 为 $taskIndex=taskrole1,任务角色 2 为 $taskIndex=taskrole2,任务角色3 为 $taskIndex=taskrole3,以此类推。
- 使用 $taskIndex 环境变量时,该任务角色中第 1 个实例 $taskIndex=0,第 2 个实例 $taskIndex=1,第 3 个实例 $taskIndex=2,以此类推。
# 离线训练
下表为您介绍离线训练中可以使用的环境变量。
| 环境变量名称 | 描述 |
|---|---|
| GEMINI_TASK_ROLE_COUNT | 任务角色数。 |
| GEMINI_TASK_ROLE_LIST | 任务角色列表,逗号分隔的任务角色 |
| GEMINI_TASK_ROLE_TASK_COUNT_$taskRole | 任务角色的计数,如果有两个任务角色,分别为ps和worker,则$GEMINI_TASK_ROLE_TASK_COUNT_ps返回ps的个数。$GEMINI_TASK_ROLE_TASK_COUNT_worker返回worker的个数 |
| GEMINI_CURRENT_TASK_ROLE_NAME | 当前任务角色名称,例如ps,worker |
| GEMINI_CURRENT_TASK_ROLE_CURRENT_TASK_INDEX | 当前节点在task role内的id,从0开始 |
| GEMINI_DATA_IN1 | 第一个训练数据的路径。一个任务最多可以使用三个不同的数据集路径,这是第一个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_IN2 | 第二个训练数据的路径。一个任务最多可以使用三个不同的数据集路径,这是第二个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_IN3 | 第三个训练数据的路径。一个任务最多可以使用三个不同的数据集路径,这是第三个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_OUT | 存储训练结果的路径,也可以把checkpoint, log等需要保存的信息放在这个路径 |
| GEMINI_RUN | 用户代码的路径,可以使用这个路径访问任务代码,使用方式见下面的:环境变量使用示例 |
| GEMINI_$taskRole_$taskIndex_$portType_PORT | 一个任务角色的一个实例开放的端口。示例使用方式:$GEMINI_taskrole1_0_http_PORT,通常与GEMINI_HOST_IP_$taskRole_$taskIndex一起使用,示例使用方式:$GEMINI_HOST_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
| GEMINI_HOST_IP_$taskRole_$taskIndex | 一个任务角色的一个实例的ip地址。示例使用方式:$GEMINI_HOST_IP_worker_0,返回第一个worker的ip。通常与GEMINI_$taskRole_$taskIndex_$portType_PORT一起使用,示例使用方式:$GEMINI_HOST_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
# 开发环境
下表为您介绍开发环境中可以使用的环境变量。
| 环境变量名称 | 描述 |
|---|---|
| GEMINI_DATA_IN1 | 第一个训练数据的路径。一个开发环境最多可以使用三个不同的数据集路径,这是第一个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_IN2 | 第二个训练数据的路径。一个开发环境最多可以使用三个不同的数据集路径,这是第二个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_IN3 | 第三个训练数据的路径。一个开发环境最多可以使用三个不同的数据集路径,这是第三个,使用方式见下面的:环境变量使用示例 |
| GEMINI_DATA_OUT | 存储训练输出内容的路径,可以把训练结果,checkpoint, log等需要保存的信息放在这个路径 |
| GEMINI_CODE | 用户代码的路径,可以使用这个路径访问任务代码 |
| GEMINI_HOST_IP_taskrole1_0 | 当前开发环境的ip地址 |
| GEMINI_taskrole1_0_http_PORT | 当前开发环境开放的http端口。通常与GEMINI_HOST_IP_taskrole1_0一起使用,示例使用方式:$GEMINI_HOST_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
| GEMINI_taskrole1_0_ssh_PORT | 当前开发环境开放的ssh端口。通常与GEMINI_HOST_IP_taskrole1_0一起使用,示例使用方式:$GEMINI_HOST_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
# 环境变量使用示例
环境变量的使用方式为 $环境变量名,比如,GEMINI_TASK_ROLE_COUNT 的使用方式为 $GEMINI_TASK_ROLE_COUNT
以一段单机训练代码示例:
import tensorflow as tf
import pathlib
import time
import argparse
parser = argparse.ArgumentParser(description='Process some integers')
parser.add_argument("--mode", default="train", help="train or test")
parser.add_argument('--model', default='mobileNet',
help='mobileNet or vgg19 or resNet50 or resNet152 or denseNet121 or nasNetLarge ')
parser.add_argument("--num_epochs", default=1, type=int)
parser.add_argument("--batch_size", default=128, type=int)
parser.add_argument("--lr", default=0.001, type=float)
parser.add_argument("--data_dir", default="/Users/daijun/PycharmProjects/pythonProject1/testdata/mydata1")
parser.add_argument("--train_dir", default="./model")
args = parser.parse_args()
AUTOTUNE = tf.data.experimental.AUTOTUNE
strategy = tf.distribute.MirroredStrategy()
...
可以通过 $GEMINI_RUN 指定python文件的位置,$GEMINI_DATA_IN1 指定读取数据集的位置,$GEMINI_DATA_OUT指定输出地址。
python3.6 $GEMINI_RUN/train_images_2.py --model resNet50 --num_epochs 3 --batch_size 100 --data_dir $GEMINI_DATA_IN1 --train_dir $GEMINI_DATA_OUT
$GEMINI_DATA_IN1路径解释
$GEMINI_DATA_IN1路径位置对应的是您提交任务时所选的第一个数据集的根目录。
我们假设提交任务时选取的第一个数据集为下图的数据集:

该数据集根目录下内容为:

那么上面的启动脚本里$GEMINI_DATA_IN1目录里面的内容就是上图数据集根目录下的内容:test_data1000目录。
$GEMINI_RUN路径解释
$GEMINI_RUN路径位置对应的是您提交任务时所选代码版本内的所有代码文件。
我们假设提交任务时选取的任务代码为下图的代码集:

该代码集根目录下内容为:

那么上面的启动脚本里$GEMINI_RUN目录里面的内容就是上图的代码集根目录下的内容:train_images.py文件。
← 资源监控 填写Orion环境变量 →