操作场景
本文介绍如何部署及使用 TensorFlow。
操作步骤
准备环境
1. 购买云服务器 CVM 实例或高性能计算集群,详情请参见 通过购买页创建实例 或 购买高性能计算集群实例。
说明
建议创建实例时,选择公共镜像并勾选后台自动安装GPU驱动,实例将在系统启动后预装对应版本驱动。若您选择自定义镜像,则请手动安装 GPU 驱动。
2. 执行以下命令,安装 docker。
curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-docker.sh | sudo bash
3. 执行以下命令,安装 nvidia-docker2。
curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-nvidia-docker2.sh | sudo bash
下载 docker 镜像
执行以下命令,下载 docker 镜像。
docker pull ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-cvm-0.4.1
启动 docker 镜像
执行以下命令,启动 docker 镜像。
docker run -it --rm --gpus all --shm-size=32g --ulimit memlock=-1 --ulimit stack=67108864 --name ttf1.15-gpu ccr.ccs.tencentyun.com/qcloud/taco-train:ttf115-cu112-cvm-0.4.1
启动后,您可执行以下命令查看 TTF 版本。
pip show ttensorflow
模型适配
动态 embedding
TF 原生的静态 Embedding 及 TTF 提供的动态 Embedding 代码如下:
deep_dynamic_variables = tf.get_variable(name="deep_dynamic_embeddings",initializer=tf.compat.v1.random_normal_initializer(0, 0.005),shape=[100000000, self.embedding_size])deep_sparse_weights = tf.nn.embedding_lookup(params=deep_dynamic_variables,ids=ft_sparse_val,name="deep_sparse_weights")deep_embedding = tf.gather(deep_sparse_weights, ft_sparse_idx)deep_embedding = tf.reshape(deep_embedding,shape=[self.batch_size, self.feature_num * self.embedding_size])
deep_dynamic_variables = tf.dynamic_embedding.get_variable(name="deep_dynamic_embeddings",initializer=tf.compat.v1.random_normal_initializer(0, 0.005),dim=self.embedding_size,devices=["/{}:0".format(FLAGS.device)],init_size=100000000)deep_sparse_weights = tf.dynamic_embedding.embedding_lookup(params=deep_dynamic_variables,ids=ft_sparse_val,name="deep_sparse_weights")deep_embedding = tf.gather(deep_sparse_weights, ft_sparse_idx)deep_embedding = tf.reshape(deep_embedding,shape=[self.batch_size, self.feature_num * self.embedding_size])
TTF 仅对以下两部分进行替换,使用非常便利:
embedding 使用
tf.dynamic_embedding.get_variable()
。lookup 使用
tf.dynamic_embedding.embedding_lookup()
。
详细的 API 使用说明文档请参见 Module: tfra.dynamic_embedding。混合精度
混合精度既可以通过代码对优化器进行重写,也可通过修改环境变量实现。如下所示:
代码修改的方式
opt = tf.train.experimental.enable_mixed_precision_graph_rewrite(opt)
环境变量方式
export TF_ENABLE_AUTO_MIXED_PRECISION=1
XLA
XLA 既可以通过代码进行配置,也可通过修改环境变量实现。如下所示:
代码修改的方式
config = tf.ConfigProto()config.graph_options.optimizer_options.global_jit_level = tf.OptimizerOptions.ON_1sess = tf.Session(config=config)
环境变量的方式
TF_XLA_FLAGS=--tf_xla_auto_jit=1
Demo
在运行 Demo 前:
1. 执行以下命令,在实例中创建一个固定的位置存放数据集。
cd /ttensorflow/dynamic-embedding-demo
2. 执行以下命令,下载数据集。
bash download_dataset.sh
您可根据以下 Demo,快速了解并使用 TTF。
benchmark
该 Demo 用于对比测试动态 embedding 和原生静态 embedding 的性能。可依次执行以下命令,运行 Demo:
cd benchmark// 按照默认配置运行python train.py// 每次修改batch size,需要将本地数据集缓存文件删掉rm -f .index .data-00000-of-00001python train.py --batch_size=16384// 分别使用静态embedding和动态embedding进行DeepFM模型训练python train.py --batch_size=16384 --is_dynamic=Falsepython train.py --batch_size=16384 --is_dynamic=True// 调整Deep部分的fc层数python train.py --batch_size=16384 --dnn_layer_num=12
ps
该 Demo 展示如何在 ps 模式下使用动态 embedding。可执行以下命令,运行 Demo:
cd ps && bash start.sh
Estimator
该 Demo 展示如何在 Estimator 模式下使用动态 embedding。可执行以下命令,运行 Demo:
cd estimator && bash start.sh