环境变量使用
更新时间:
平台针对用户常用的路径、角色等参数信息专门设置了环境变量,您在代码中可直接使用环境变量,而无需关注具体的路径等参数的具体值。
# 环境变量说明
各环境变量及其适用可参考如下表格。
环境变量 | 开发环境 | 离线训练 | 描述 |
---|---|---|---|
GEMINI_TASK_ROLE_COUNT | 否 | 支持 | 任务角色数,使用方式:$GEMINI_TASK_ROLE_COUNT |
GEMINI_TASK_ROLE_LIST | 否 | 支持 | 任务角色列表,列表中各任务角色以逗号分隔。使用方式:$GEMINI_TASK_ROLE_LIST |
GEMINI_TASK_ROLE_TASK_COUNT_$taskRole | 否 | 支持 | 如果有两个任务角色,分别为 taskrole1 和 taskrole2,则 $GEMINI_TASK_ROLE_TASK_COUNT_taskrole1 返回 taskrole1 的实例个数。示例使用方式:$GEMINI_TASK_ROLE_TASK_COUNT_ps |
GEMINI_CURRENT_TASK_ROLE_NAME | 否 | 支持 | 当前任务角色名称,例如 ps,worker。使用方式:$GEMINI_CURRENT_TASK_ROLE_NAME |
GEMINI_CURRENT_TASK_ROLE_CURRENT_TASK_INDEX | 否 | 支持 | 当前节点在 task role 内的 id,从 0 开始。 |
GEMINI_DATA_IN1 | 支持 | 支持 | 训练数据的第一个挂载路径。使用方式:$GEMINI_DATA_IN1 |
GEMINI_DATA_IN2 | 支持 | 支持 | 训练数据的第二个挂载路径。使用方式:$GEMINI_DATA_IN2 |
GEMINI_DATA_IN3 | 支持 | 支持 | 训练数据的第三个挂载路径。使用方式:$GEMINI_DATA_IN3 |
GEMINI_PRETRAIN1 | 支持 | 支持 | 模型的第一个挂载路径。使用方式:$GEMINI_PRETRAIN1 |
GEMINI_PRETRAIN2 | 支持 | 支持 | 模型的第二个挂载路径。使用方式:$GEMINI_PRETRAIN2 |
GEMINI_PRETRAIN3 | 支持 | 支持 | 模型的第三个挂载路径。使用方式:$GEMINI_PRETRAIN3 |
GEMINI_DATA_OUT | 否 | 支持 | 训练结果的路径,用户可将模型文件、checkpoint、log 等训练输出均保存于该路径下。使用方式:$GEMINI_DATA_OUT |
GEMINI_RUN | 否 | 支持 | 代码的存储路径。使用方式:$GEMINI_RUN |
GEMINI_$taskRole_$taskIndex_$portType_PORT | 否 | 支持 | 一个任务角色的一个实例开放的端口。示例使用方式:$GEMINI_taskrole1_0_http_PORT ,通常与 GEMINI_IP_$taskRole_$taskIndex 一起使用,示例:$GEMINI_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
GEMINI_IP_$taskRole_$taskIndex | 否 | 支持 | 一个任务角色的一个实例的 ip 地址。示例使用方式:$GEMINI_IP_worker_0 ,返回第一个 worker 的 ip。通常与 GEMINI_$taskRole_$taskIndex_$portType_PORT 一起使用,示例:$GEMINI_IP_taskrole1_0:$GEMINI_taskrole1_0_http_PORT |
GEMINI_CODE | 支持 | 否 | 用户代码的路径,可以使用这个路径访问任务代码。 |
GEMINI_IP_taskrole1_0 | 支持 | 否 | 当前开发环境的ip地址 |
# 使用示例
环境变量的使用方式为 $环境变量名
,比如,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/data1
。$GEMINI_RUN
变量表示代码在环境中的挂载路径,即/gemini/code
。$GEMINI_DATA_OUT
变量表示训练结果的输出路径,即/gemini/output