机器学习PAI训练时如何在work节点打印auc?worker1的日志我看到只有loss。请问在哪里能够看到? 还是需要在config中配置下?
在机器学习PAI训练期间,你可以使用Python的print函数在work节点打印auc。
具体步骤如下:
在你的Python代码中导入所需的模块,例如sklearn库和numpy库等。
在代码中执行模型训练,并在训练过程中计算auc值。
使用Python的print()函数将auc值打印到控制台。
在PAI上提交训练任务时,设置日志级别为DEBUG或更高级别,以便在控制台上查看训练过程中的输出。
以下是示例代码,展示了如何在PAI的work节点上打印AUC:
from sklearn.metrics import roc_auc_score import numpy as np
X_train, X_test, y_train, y_test = load_data() model.fit(X_train, y_train)
y_pred_proba = model.predict_proba(X_test)[:, 1] auc = roc_auc_score(y_test, y_pred_proba)
print("AUC: {}".format(auc)) 提交任务时,可以将日志级别设置为DEBUG,这样就可以在PAI的控制台上实时查看训练过程中的AUC值输出。例如:
pai -name tensorflow115 -project test -Dlog_level=DEBUG --k8s_gpu_type=xxx -jobtype tensorflow115 --file xxx.py
在机器学习PAI平台的训练任务中,您可以在训练脚本中使用fluid.metrics.Auc()
函数来计算和打印Area Under Curve (AUC)并将其输出到日志中。同时,您需要将训练脚本添加到PAI中进行提交并配置好训练任务。
以下是一个简单的示例代码,演示如何在其训练过程中使用Auc()函数:
import paddle.fluid as fluid
train_program = fluid.Program()
startup_program = fluid.Program()
# 创建计算图
with fluid.program_guard(train_program, startup_program):
# 加载数据并定义网络结构
...
# 构建Auc计算节点
auc_metric = fluid.metrics.Auc()
# 构建优化器
optimizer = fluid.optimizer.AdagradOptimizer(
learning_rate=0.005)
optimizer.minimize(cost)
# 定义Executor
place = fluid.CUDAPlace(0)
exe = fluid.Executor(place)
exe.run(startup_program)
# 定义训练循环
for epoch_id in range(num_epochs):
for batch_id, data in enumerate(train_reader()):
loss, auc_value = exe.run(
program=train_program,
feed=feeder.feed(data),
fetch_list=[cost] + auc_metric.metrics
)
print("Epoch {:03d}, Batch {:03d}, Loss {:.04f}, AUC {:.04f}"
.format(epoch_id, batch_id, loss[0], auc_value[0]))
在上面的示例代码中,使用了fluid.metrics.Auc()
函数创建了一个AUC计算节点。在训练循环中,使用auc_metric.metrics
获取AUC计算节点中的AUC指标并打印出来。
您可以将上面的示例代码替换为自己的训练脚本,并将其提交到PAI上进行训练。训练日志中将会包含AUC的输出。
在阿里云机器学习PAI训练过程中,您可以使用tf.summary
模块将训练过程中的指标(如AUC)写入TensorBoard日志中。并通过TensorBoard界面查看训练过程中的各项指标变化。
同时,您也可以通过在训练中使用print()
函数的方式在Work节点打印相关信息或指标。您可以在训练代码中的合适位置添加print()
函数实现。
例如:在训练的每个epoch结束后,通过以下代码获取AUC值并在Work节点打印出来:
# 模型训练过程中每个epoch结束时计算AUC
auc, _ = model.evaluate(x_test, y_test, verbose=0)
print('AUC: %.2f%%' % (auc*100))
另外,在使用print()
函数在Work节点打印AUC信息时,需要注意的是,由于训练过程可能会持续较长时间,打印的信息可能会很多,因此最好将信息写入日志文件中,而不是直接打印在控制台上,以便后续分析。您可以使用Python标准库中的logging
模块实现。例如:
import logging
# 配置日志
logging.basicConfig(filename='train.log', level=logging.INFO)
# 模型训练过程中每个epoch结束时计算AUC并写入日志
aic, _ = model.evaluate(x_test, y_test, verbose=0)
logging.info('AUC: %.2f%%' % (auc*100))
上述代码会将AUC信息写入到名为train.log
的日志文件中,在训练过程中可随时查看日志信息。
在机器学习 PAI 平台上,可以使用 TensorBoard 工具来实时可视化模型训练的进度和性能指标,包括 AUC。
首先,在代码中要用 TensorBoard 相关的 API 将 AUC 数据写入日志文件,一般情况下是通过 tf.summary.scalar() 函数将 AUC 等数值类型变量写入到日志文件中。示例代码如下:
import tensorflow as tf
auc, update_op = tf.metrics.auc(labels, predictions)
tf.summary.scalar('AUC', auc)
with tf.Session() as sess: sess.run(tf.local_variables_initializer()) for i in range(num_batches): _, summary_str = sess.run([update_op, summary_op], feed_dict=...) writer.add_summary(summary_str, global_step=i) 然后,在作业提交时需要配置 TensorBoard 的服务端地址和端口号,并且在作业配置界面勾选“tensorboard”启用该服务。等到任务启动后,在 work 节点中可以通过浏览器访问 TensorBoard 界面并查看训练进度和性能指标。例如,如果 TensorBoard 服务的端口号为 port,那么在 work 节点上打开浏览器输入 URL:http://work_node_ip:port 即可打开 TensorBoard 界面。在界面左侧的“SCALARS”选项卡中可以看到记录的 AUC 数据,并进行具体的查看和分析。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。