我的Cloud ML培训工作完成了输出:
"consumedMLUnits": 43.24
Run Code Online (Sandbox Code Playgroud)
如何使用此信息确定培训工作的成本?我无法决定以下两个选项:
1)根据这个页面,我应该按照工作期限(4.5小时)的ML单位数乘以0.49美元(因为我位于美国).所以:
$0.49 x 43.24 x 4.5 = $95.3442
2)另一方面,我的经验是,长时间运行的培训工作导致更高的价值consumedMLUnits,这表明持续时间已经纳入该指标.如果是这样,我认为计算将是:
$0.49 x 43.24 = $21.1876
哪一项是正确的?
我正在尝试在Google Cloud中运行机器学习Jon,但它总是告诉我没有足够的加速器可用,我已尝试使用该参数----scale-tier=BASIC | BASIC_GPU | STANDARD_1 | PREMIUM_1.并且是相同的结果.
这是命令和结果:
gcloud ml-engine jobs submit training object_detection_`date +%s` --job-dir=gs://${TRAIN_DIR} --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz --module-name object_detection.train --region us-central1 --config ${PATH_TO_LOCAL_YAML_FILE} -- --train_dir=gs://${TRAIN_DIR} --pipeline_config_path=gs://${PIPELINE_CONFIG_PATH}
ERROR: (gcloud.ml-engine.jobs.submit.training) RESOURCE_EXHAUSTED: Field: scale_tier Error: Insufficient accelerators are available in region us-central1 to schedule the job which requests 6 K80 accelerators. Please wait and try again or else try submitting your job to a different region.
- '@type': type.googleapis.com/google.rpc.BadRequest
fieldViolations:
- description: Insufficient accelerators are available in region us-central1 …Run Code Online (Sandbox Code Playgroud) I am running a cloud ML engine job and my tensorboard plots are showing the fraction of zero values for my hidden layers steadily increasing towards 1 as the number of steps increases. How should this plot be interpreted? I believe it is a good thing as more zero values would suggest that the model is getting more "certain" about the predictions that it is making.
如果我需要在Cloud ML Engine培训工作中使用每晚的TensorFlow构建,该如何做?
我目前使用Google Cloud ML Engine设置来训练在Keras中创建的模型.使用Keras时,ML Engine似乎不会自动将日志保存到存储桶中.我在ML Engine Jobs页面中看到了日志,但它们没有显示在我的存储桶中,因此我无法在训练时运行tensorboard.
我在设置环境时遵循了本教程:(http://liufuyang.github.io/2017/04/02/just-another-tensorflow-beginner-guide-4.html)
那么,在ML Engine上训练Keras模型时,如何获取日志并运行tensorboard?还有其他人在这方面取得了成功吗?
我刚刚完成模型的训练,却发现我导出的服务模型存在签名问题。我如何更新它们?
(一个常见问题是为 CloudML Engine 设置错误的形状)。
tensorflow tensorflow-serving google-cloud-ml google-cloud-ml-engine
我正在试验Cloud ML Engine上的分布式培训选项,并观察了一些奇特的结果.我基本上改变了人口普查自定义估算器示例,以包含一个略有不同的模型,并将我的损失函数更改为AdamOptimizer作为唯一真正的更改.基于这个其他线程,我的理解是任何分布式培训都应该是数据并行异步培训,这表明"如果在10个工作节点中分配10,000个批次,则每个节点大约可以处理1000个批次".在我的实验中,我有大约650k的训练样例,我正在运行以下实验,一个批次大小为128的1个纪元.鉴于650k训练样例和128个批量大小,我希望在一个大约5.1k步骤时代.这是我为不同--scale-tier的人所看到的表现
没有分发
分散式
STANDARD_1:14.5步/秒 - 26k步(26k*128 = ~3.3M,这比实际数据中的训练样本多),29分钟的停留时间
CUSTOM - 5个complex_model_m工作人员,2个large_model参数服务器:27步/秒,31k步(128*31k = ~3.9M,这比实际数据中的650k训练样本多),挂机时间20分钟
我的期望是基于文章的数据平行是分布式培训会将批次分成所有工人,所以如果我有5个批次的5个工人,那么每个工人将执行~1,000批次.然而,我观察到的实际行为似乎更接近于自己执行1个时代的5名工人中的每一个.在分布式设置中进行训练时,在一个时代中采取的步数是训练样例的6倍 - 我知道步骤的真正定义是每次更新渐变时,但我对数据并行训练的理解是这只会拆分批次,所以应该有相同数量的渐变更新 - 有什么理由为什么会出现这种行为?在数据并行异步训练分布式环境中需要更多的训练步骤是否有意义?任何人都可以解释我观察到的行为吗?
我有一个训练有素的网络张量流,我希望在gcloud ml-engine中用于预测.
预测gcloud ml服务应接受大小为320x240x3的numpy数组float32类型图像并返回2个微小矩阵作为输出.
有谁知道我应该如何创建接受这种输入类型的输入图层?
我尝试了多种方法,例如使用base64编码的json文件,但是将字符串转换为float类型会产生一个不支持的错误:
"error": "Prediction failed: Exception during model execution: LocalError(code=StatusCode.UNIMPLEMENTED, details=\"Cast string to float is not supported\n\t [[Node: ToFloat = Cast[DstT=DT_FLOAT, SrcT=DT_STRING, _output_shapes=[[-1,320,240,3]], _device=\"/job:localhost/replica:0/task:0/cpu:0\"](ParseExample/ParseExample)]]\")"
Run Code Online (Sandbox Code Playgroud)
这是创建json文件的示例(在将上面的numpy数组保存为jpeg之后):
python -c 'import base64, sys, json; img = base64.b64encode(open(sys.argv[1], "rb").read()); print json.dumps({"images": {"b64": img}})' example_img.jpg &> request.json
而tensorflow命令试图处理输入:
raw_str_input = tf.placeholder(tf.string, name='source')
feature_configs = {
'image': tf.FixedLenFeature(
shape=[], dtype=tf.string),
}
tf_example = tf.parse_example(raw_str_input, feature_configs)
input = tf.identity(tf.to_float(tf_example['image/encoded']), name='input')
Run Code Online (Sandbox Code Playgroud)
以上是其中一个测试的例子,也尝试了多次尝试不同的tensorflow命令来处理输入,但没有一个工作...
我们正在Google Cloud上建立机器学习管道,利用GC ML-Engine进行分布式TensorFlow培训和模型服务,并利用DataFlow进行分布式预处理作业.
我们希望在Google Cloud上运行我们的Apache Beam应用程序作为DataFlow作业.看看ML-Engine样本 ,似乎可以得到tensorflow_transform.beam.impl AnalyzeAndTransformDataset来指定使用哪个PipelineRunner,如下所示:
from tensorflow_transform.beam import impl as tft
pipeline_name = "DirectRunner"
p = beam.Pipeline(pipeline_name)
p | "xxx" >> xxx | "yyy" >> yyy | tft.AnalyzeAndTransformDataset(...)
Run Code Online (Sandbox Code Playgroud)
TemplatingDataflowPipelineRunner提供了将预处理开发与参数化操作分开的功能 - 请参阅此处:https://cloud.google.com/dataflow/docs/templates/overview-基本上:
现在的问题是:你能告诉我,我们怎能用tf.Transform利用TemplatingDataflowPipelineRunner?
google-cloud-dataflow tensorflow apache-beam google-cloud-ml google-cloud-ml-engine
我试图简单地调用我训练的模型的REST API端点,我遇到了问题.我一直称为端点并获得404.
有人知道如何设置此端点的基本教程吗?我只想在Postman中运行它并测试它的工作原理我可以继续我的项目.
任何帮助,将不胜感激!提前致谢!