0 前言
予读者言:
本系列博客本义作为笔者记录所用,所以可能稍显冗长,但同时也记录了我的学习研究思路,会在学习的过程中不断更新,可供读者借鉴,能对大家有些许帮助就是笔者最为开心之事~
1 Notebook Servers
notebook 可以说是做机器学习最喜欢用到的工具了,完美的将动态语言的交互性
发挥出来,kubeflow 提供了 jupyter notebook
来快速构建云上的实验环境。
1.1 创建一个配置好tensorflow镜像的pod
这里以一个public的镜像为例:
其他暂不做其他设置,LAUNCH
创建大约需要10min,需要大致1G流量。
1.2 进入应用界面
点击CONNECT
按钮就可以进入
1.3 创建自己的jupyter文件
这里笔者选择测试的文件是 tensorflow
分布式训练教程的官方文件。
可以根据自己需求和平常一样进行开发,直接在一个容器里面,无需研发之后再dockerfile制作镜像。
2 AutoML
AutoML
是机器学习比较热的领域,主要用来模型自动优化和超参数调整,这里其实是用的 Katib
来实现的,一个基于k8s的 AutoML 项目。
Katib
主要提供了 超参数调整(Hyperparameter Tuning
)和神经网络架构搜索(Neural Architecture Search
)
2.1 准备好yaml文件
这里以一个简单的神经网络为例,该程序具有三个参数 学习率lr
, 神经网络层数num-layers
, 优化器optimizer
,采用的算法是随机搜索,目标是最大化准确率(accuracy)。
apiVersion: "kubeflow.org/v1beta1"
kind: Experiment
metadata:
namespace: kubeflow-user-example-com
name: random-example
spec:
objective:
type: maximize
goal: 0.99
objectiveMetricName: Validation-accuracy
additionalMetricNames:
- Train-accuracy
algorithm:
algorithmName: random
parallelTrialCount: 3
maxTrialCount: 12
maxFailedTrialCount: 3
parameters:
- name: lr
parameterType: double
feasibleSpace:
min: "0.01"
max: "0.03"
- name: num-layers
parameterType: int
feasibleSpace:
min: "2"
max: "5"
- name: optimizer
parameterType: categorical
feasibleSpace:
list:
- sgd
- adam
- ftrl
trialTemplate:
primaryContainerName: training-container
trialParameters:
- name: learningRate
description: Learning rate for the training model
reference: lr
- name: numberLayers
description: Number