有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

本文介绍如何部署及使用 TensorFlow。

操作步骤

准备环境

1. 购买云服务器 CVM 实例或高性能计算集群,详情请参见 通过购买页创建实例购买高性能计算集群实例
说明
建议创建实例时,选择公共镜像并勾选后台自动安装GPU驱动,实例将在系统启动后预装对应版本驱动。若您选择自定义镜像,则请手动安装 GPU 驱动。
2. 执行以下命令,安装 docker。
curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-docker.sh | sudo bash
若您无法通过该命令安装,请尝试多次执行命令,或参见 Docker 官方文档 Install Docker Engine 进行安装。
3. 执行以下命令,安装 nvidia-docker2。
curl -s -L http://mirrors.tencent.com/install/GPU/taco/get-nvidia-docker2.sh | sudo bash
若您无法通过该命令安装,请尝试多次执行命令,或参见 NVIDIA 官方文档 Installation Guide & mdash 进行安装。

下载 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 代码如下:
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 仅对以下两部分进行替换,使用非常便利:
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_1
sess = 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-00001
python train.py --batch_size=16384
?
// 分别使用静态embedding和动态embedding进行DeepFM模型训练
python train.py --batch_size=16384 --is_dynamic=False
python 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
?
?


http://www.vxiaotou.com