我有一个非常简单的培训师,遵循样本目录结构:
/dist
__init__.py
setup.py
/trainer
__init__.py
task.py
Run Code Online (Sandbox Code Playgroud)
在/ dist目录下,在本地运行正常:
$ gcloud ml-engine local train
--package-path=trainer
--module-name=trainer.task
Run Code Online (Sandbox Code Playgroud)
现在,在尝试部署它时,在/ dist目录和此命令下:
$ gcloud ml-engine jobs submit training testA
--package-path=trainer
--module-name=trainer.task
--staging-bucket=$JOB_DIR
--region us-central1
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误"没有模块化的名字教练"
INFO 2017-04-13 12:28:35 -0700 master-replica-0 Installing collected packages: pyyaml, scipy, scikit-learn, trainer
INFO 2017-04-13 12:28:38 -0700 master-replica-0 Successfully installed pyyaml-3.12 scikit-learn-0.18.1 scipy-0.18.1 trainer-0.1
INFO 2017-04-13 12:28:38 -0700 master-replica-0 Running command: python -m trainer.task
ERROR 2017-04-13 12:28:38 -0700 master-replica-0 /usr/bin/python: No module named trainer
Run Code Online (Sandbox Code Playgroud)
编辑:这是setup.py的内容
from setuptools import find_packages
from …Run Code Online (Sandbox Code Playgroud) 我有一个google-cloud-ml模型,我可以通过传递float32的3维数组运行预测...
{ 'instances' [ { 'input' : '[ [ [ 0.0 ], [ 0.5 ], [ 0.8 ] ] ... ] ]' } ] }
然而,这不是传输图像的有效格式,因此我想传递base64编码的png或jpeg. 本文档讨论了这样做,但不清楚的是整个json对象是什么样的.是否{ 'b64' : 'x0welkja...' }代替了'[ [ [ 0.0 ], [ 0.5 ], [ 0.8 ] ] ... ] ]',留下封闭的"实例"和"输入"相同?还是其他一些结构?或者,张量流模型是否必须在base64 上进行训练?
我正在尝试运行分布式GCMLE培训工作,但不断出现以下错误:
An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error
Run Code Online (Sandbox Code Playgroud)
该Trainer软件包是一个自定义估算器,其建模方式与cloudml-samples普查自定义估算器相同:https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master/census/customestimator/trainer。可以肯定地说task.py文件是完全相同的,并且model.py文件中的input_fn()和parse_csv()函数是相同的,唯一的不同是在my的细节内model_fn()。
如果我将模型配置为与单个standard_p100GPU 一起运行,则可以约15步/秒的速度进行训练。但是,如果我将配置更新为具有4个工作程序和3个参数服务器的分布式设置(请参阅下面的配置),则会弹出抢占错误,并且10个步骤将花费约600秒...
config-distributed.yaml:
trainingInput:
scaleTier: CUSTOM
masterType: standard_p100
workerType: standard_p100
parameterServerType: large_model
workerCount: 3
parameterServerCount: 3
Run Code Online (Sandbox Code Playgroud)
如果我在普查自定义估算器样本中使用相同的配置,则模型的训练速度将比预期的更快,并且不会遇到抢占错误。我尝试修改人口普查示例以更精确地模仿我的确切代码,但仍然无法重现该错误。
尝试培训分布式ml引擎作业时,是否有人遇到过类似的抢占问题?关于如何更好地调试问题的任何建议?我在网上找到的唯一建议是建议参数服务器的数量至少为工作人员数量的一半(这就是为什么我将参数服务器提高到3个的原因),但是我仍然没有运气。
为了从日志中添加更多上下文,这是我尝试在分布式设置中进行训练时会发生的典型(重复)模式:
master-replica-0 loss = 16.5019, step = 53 …Run Code Online (Sandbox Code Playgroud) (注意:我也在这里问过这个问题)
我一直在尝试让 Google Cloud 的 AI 平台显示在 AI 平台上训练的 Keras 模型的准确性。我配置了超参数调整,hptuning_config.yaml它工作正常。但是,我无法让 AI 平台tf.summary.scalar在训练期间接听电话。
我一直在关注以下文档页面:
1.超参数调优概述
2.使用超参数调优
根据[1]:
AI Platform Training 如何获取您的指标 您可能会注意到,本文档中没有关于将您的超参数指标传递给 AI Platform Training 训练服务的说明。这是因为该服务会监控由您的训练应用程序生成的 TensorFlow 摘要事件并检索指标。”
根据[2],生成此类 Tensorflow 摘要事件的一种方法是创建一个回调类,如下所示:
class MyMetricCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
tf.summary.scalar('metric1', logs['RootMeanSquaredError'], epoch)
Run Code Online (Sandbox Code Playgroud)
所以在我的代码中我包括:
# hptuning_config.yaml
trainingInput:
hyperparameters:
goal: MAXIMIZE
maxTrials: 4
maxParallelTrials: 2
hyperparameterMetricTag: val_accuracy
params:
- parameterName: learning_rate
type: DOUBLE
minValue: 0.001
maxValue: 0.01
scaleType: UNIT_LOG_SCALE …Run Code Online (Sandbox Code Playgroud) google-cloud-platform keras tensorflow google-cloud-ml gcp-ai-platform-training
我想使用谷歌的机器学习与在python上编写的App Engine应用程序.
由于调查性质(使用Kohonen的SOM进行数据聚类),此应用程序应在每次使用之前重新训练TensorFlow模型.
我有以下问题:
一个基于App Engine的应用程序可以命令机器学习的东西训练一些模型与一些输入数据吗?一个基于App Engine的应用程序可以将一些输入向量发送到ML事物并获得结果(此向量属于哪个集群)?如果一切皆有可能,那怎么办?
如果没有可能的话,我可以使用任何其他架构来构建基于App Engine的应用程序TensorFlow吗?
python google-app-engine machine-learning tensorflow google-cloud-ml
我正在使用 google api python 客户端和在 google cloud 为我托管的模型在 google cloud machine learning API 上运行在线预测。当我预测发送一张图像时,服务器(包括所有流量)大约需要 40 秒。当我发送两个图像时,一段时间后,我收到消息:
timeout: The read operation timed out
Run Code Online (Sandbox Code Playgroud)
我想将超时设置为其他值,但我没有找到方法。
这是我的代码:
import base64
import io
import time
from PIL import Image
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
SCOPES = ['https://www.googleapis.com/auth/cloud-platform']
SERVICE_ACCOUNT_FILE = 'mycredentialsfile.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
ml = discovery.build('ml', 'v1', credentials=credentials)
projectID = 'projects/{}'.format('projectID') + '/models/{}'.format('modelID')
width = 640
height = 480
instances = []
for image in ["image5.jpg", "image6.jpg"]:
img = Image.open(image) …Run Code Online (Sandbox Code Playgroud) 我正在使用Tensorflow 对象检测 API来训练使用迁移学习的对象检测模型。具体来说,我正在使用模型 zoo 中的 ssd_mobilenet_v1_fpn_coco,并使用提供的示例管道,当然用实际链接替换了占位符,我的训练和评估 tfrecords 和标签。
我能够使用上述管道成功地在我的约 5000 张图像(和相应的边界框)上训练模型(如果相关的话,我主要在 TPU 上使用 Google 的 ML 引擎)。
现在,我准备了大约 2000 张额外的图像,并希望继续使用这些新图像训练我的模型,而无需从头开始(训练初始模型花费了大约 6 小时的 TPU 时间)。我怎样才能做到这一点?
machine-learning tensorflow google-cloud-ml object-detection-api
我使用 Scikit-Learn Python API 在 Python 中训练了一个 xgboost 模型,并使用pickle库对其进行序列化。我将模型上传到 ML Engine,但是当我尝试进行在线预测时,出现以下异常:
Prediction failed: Exception during xgboost prediction: can not initialize DMatrix from DMatrix
Run Code Online (Sandbox Code Playgroud)
我用于预测的 json 示例如下:
{
"instances":[
[
24.90625,
21.6435643564356,
20.3762376237624,
24.3679245283019,
30.2075471698113,
28.0947368421053,
16.7797359774725,
14.9262079299572,
17.9888028979966,
15.3333284503293,
19.6535308744024,
17.1501961307627,
0.0,
0.0,
0.0,
0.0,
0.0,
509.0,
497.0,
439.0,
427.0,
407.0,
1.0,
1.0,
1.0,
1.0,
1.0,
2.0,
23.0,
10.0,
58.0,
11.0,
20.0,
23.3617021276596,
23.3617021276596,
23.3617021276596,
23.3617021276596,
23.3617021276596,
23.9423076923077,
26.3082269243683,
23.6212606363851,
22.6752334301282,
27.4343583104833,
34.0090408101173,
11.1991944104063,
7.33420726455092,
8.15160392948917,
11.4119236389594,
17.9429092915607, …Run Code Online (Sandbox Code Playgroud) 我在 GCP 和 AI Platform (Jupyterlab) 方面遇到了一些问题,似乎无法长时间与服务器保持稳定的连接。我不断收到“服务器连接错误”消息。从那里有两种可能性:
有时,当我在(重新)启动实例后运行第一个单元时,就会发生这种情况,有时会晚一点。我能够在笔记本上工作而没有任何问题的最长稳定时间是 20、30 分钟左右,这非常烦人。
我的主实例的配置: - 16 个 CPU - 60GB RAM - P100 NVIDIA GPU
我尝试过不同类型的实例,一直遇到同样的问题,家里网络稳定。
google-cloud-platform google-cloud-ml jupyter-lab google-dl-platform gcp-ai-platform-notebook
我正在使用 Google Cloud Platform (GCP) 上的 Vertex AI 自定义训练功能来训练模型。但每次我触发训练时,由于配置时间的原因,需要 10 分钟才能真正开始训练。
有什么方法可以减少 Vertex AI 自定义训练作业的配置时间。谢谢 :)
google-cloud-ml ×10
tensorflow ×4
python ×2
gcloud ×1
jupyter-lab ×1
keras ×1
python-3.x ×1
xgboost ×1