环境变量使用

更新时间:

平台针对用户常用的路径、角色等参数信息专门设置了环境变量,您在代码中可直接使用环境变量,而无需关注具体的路径等参数的具体值。

# 环境变量说明

各环境变量及其适用可参考如下表格。

环境变量 开发环境 离线训练 描述
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