使用内置 NCF 算法进行训练

使用 AI Platform Training 中的内置算法进行训练时,您无需编写任何训练代码即可提交数据集并训练模型。本页面介绍了内置 NCF 算法的工作原理及使用方法。

概览

此内置算法仅执行训练:

  1. 训练:AI Platform Training 使用您提供的数据集和模型参数,通过 Tensorflow 的 NCF 实现运行训练。

限制

使用内置 NCF 算法进行训练时不支持以下功能

  • 自动数据预处理:此版本的 NCF 要求输入数据采用 TFRecord 的形式进行训练和输出。必须提供训练应用才能自动处理未格式化的输入。

支持的机器类型

以下是系统支持的 AI Platform Training 容量层级和机器类型

  • BASIC 容量层级
  • BASIC_GPU 容量层级
  • BASIC_TPU 容量层级
  • CUSTOM 容量层级和 AI Platform Training 所支持的任何 Compute Engine 机器类型
  • CUSTOM 容量层级和以下任何旧版机器类型
    • standard
    • large_model
    • complex_model_s
    • complex_model_m
    • complex_model_l
    • standard_gpu
    • standard_p100
    • standard_v100
    • large_model_v100
    • complex_model_m_gpu
    • complex_model_l_gpu
    • complex_model_m_p100
    • complex_model_m_v100
    • complex_model_l_v100
    • TPU_V2(8 个核心)

建议使用可访问 TPU 或 GPU 的机器类型。

设置输入数据的格式

在训练模型之前,确保输入和评估数据采用 TFRecord 格式。

检查 Cloud Storage 存储分区权限

要存储数据,请使用用于运行 AI Platform Training 作业的同一 Google Cloud 项目中的 Cloud Storage 存储分区。否则,需要向 AI Platform Training 授予对存储数据的 Cloud Storage 存储分区的访问权限

提交 NCF 训练作业

本部分介绍如何使用内置 NCF 算法提交训练作业。

您可以在 Google Cloud Console 中找到每个超参数的简要说明,还可以在内置 NCF 算法参考文档中查看更全面的说明。

控制台

  1. 转到 Google Cloud Console 中的 AI Platform Training“作业”页面:

    AI Platform Training“作业”页面

  2. 点击新建训练作业按钮。从下方显示的选项中,点击内置算法训练

  3. 创建新的训练作业页面上,选择 NCF,然后点击下一步

  4. 如需详细了解所有可用的参数,请点击 Google Cloud Console 中的链接,查看内置 NCF 参考文档了解详情。

gcloud

  1. 为作业设置环境变量:

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='BUCKET_NAME'
       IMAGE_URI='gcr.io/cloud-ml-algos/ncf:latest'
    
       # Specify the Cloud Storage path to your training input data.
       DATA_DIR='gs://$BUCKET_NAME/ncf_data'
    
       DATE="$(date '+%Y%m%d_%H%M%S')"
       MODEL_NAME='MODEL_NAME'
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    

    请替换以下内容:

    • BUCKET_NAME:您要存储训练输出的 Cloud Storage 存储分区的名称。
    • MODEL_NAME:模型的名称,用于确定模型工件在 Cloud Storage 存储分区中的存储位置。
  2. 使用 gcloud ai-platform jobs training submit 提交训练作业。请调整此通用示例,以使用您的数据集:

       gcloud ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC_TPU --job-dir=$JOB_DIR \
          -- \
          --train_dataset_path=${DATA_DIR}/training_cycle_*/* \
          --eval_dataset_path=${DATA_DIR}/eval_data/* \
          --input_meta_data_path=${DATA_DIR}/metadata \
          --learning_rate=3e-5 \
          --train_epochs=3 \
          --eval_batch_size=160000 \
          --learning_rate=0.00382059 \
          --beta1=0.783529 \
          --beta2=0.909003 \
          --epsilon=1.45439e-07 \
          --num_factors=64 \
          --hr_threshold=0.635 \
          --keras_use_ctl=true \
          --layers=256,256,128,64 \
    
  3. 使用 gcloud 查看日志,从而监控训练作业的状态。请参阅 gcloud ai-platform jobs describegcloud ai-platform jobs stream-logs

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

深入学习资源