PAI TensorFlow Q&A

PAI TensorFlow Q&A

目录

  • 如何开通PAI的深度学习功能
  • 如何支持多python文件脚本引用
  • 如何上传数据到OSS
  • 如何使用PAI读取OSS数据
  • 如何使用PAI写入数据到OSS
  • PAI平台关于Tensorflow的案例有哪些
  • 如何查看Tensorflow的相关日志

如果以上内容无法解决您的问题,请首先查看PAI知识库:https://help.aliyun.com/product/30347.html,若问题仍得不到解决请粘贴logview(Tensorflow日志中的蓝色长链接)到PAI工单系统进行提问,工单系统地址:https://workorder.console.aliyun.com/console.htm?spm=5176.product30347.4.8.ZvFh1j#/ticket/add?productCode=pai&commonQuestionId=660


如何开通PAI的深度学习功能

目前机器学习平台深度学习相关功能处于公测阶段,深度学习组件包含TensorFlow、Caffe、MXNet三个框架,开通方式如下,进入机器学习控制台,在相应项目下勾选GPU资源即可使用。

开通GPU资源的项目会被分配到公共的资源池,可以动态的调用底层的GPU计算资源。另外需要在设置中设置OSS的访问权限:

如何支持多python文件脚本引用

很多时候我们通过python 模块文件组织训练脚本。可能将模型定义在不同的Python文件里,将数据的预处理逻辑放在另外一个Python文件中,最后有一个Python文件将整个训练过程串联起来。例如:在test1.py中定义了一些函数,需要在test2.py文件使用test1.py中的函数,并且将test2.py作为程序入口函数,只需要将test1.py和test2.py打包成tar.gz文件上传即可。

  • Python代码文件为定义的tar.gz包
  • Python主文件定义入口程序文件

如何上传数据到OSS

可以观看视频:https://help.aliyun.com/video_detail/54945.html

使用深度学习处理数据时,数据先存储到OSS的bucket中。第一步要创建OSS Bucket。 由于深度学习的GPU集群在华东2,建议您创建 OSS Bucket 时选择华东2地区。这样在数据传输时就可以使用阿里云经典网络,算法运行时不需要收取流量费用。Bucket 创建好之后,可以在OSS管理控制台 来创建文件夹,组织数据目录,上传数据了。

OSS支持多种方式上传数据, API或SDK详细见:https://help.aliyun.com/document_detail/31848.html?spm=5176.doc31848.6.580.a6es2a

OSS还提供了大量的常用工具用来帮助用户更加高效的使用OSS。工具列表请参见: https://help.aliyun.com/document_detail/44075.html?spm=5176.doc32184.6.1012.XlMMUx

建议您使用 ossutil 或 osscmd ,这是两个命令行工具,通过命令的方式来上传、下载文件,还支持断点续传。

注:在使用工具时需要配置 AccessKey 和ID,登录后,可以在Access Key 管理控制台创建或查看。

如何使用PAI读取OSS数据

Python不支持读取oss的数据, 故所有调用python Open() os.path.exist() 等文件, 文件夹操作的
函数的代码都无法执行.如Scipy.misc.imread(),numpy.load()

那如何在PAI读取数据呢, 通常我们采用两种办法.

方法一

如果只是简单的读取一张图片, 或者一个文本等, 可以使用tf.gfile下的函数, 具体成员函数如下

tf.gfile.Copy(oldpath, newpath, overwrite=False) # 拷贝文件
tf.gfile.DeleteRecursively(dirname) # 递归删除目录下所有文件
tf.gfile.Exists(filename) # 文件是否存在
tf.gfile.FastGFile(name, mode='r') # 无阻塞读取文件
tf.gfile.GFile(name, mode='r') # 读取文件
tf.gfile.Glob(filename) # 列出文件夹下所有文件, 支持pattern
tf.gfile.IsDirectory(dirname) # 返回dirname是否为一个目录
tf.gfile.ListDirectory(dirname) # 列出dirname下所有文件
tf.gfile.MakeDirs(dirname) # 在dirname下创建一个文件夹, 如果父目录不存在, 会自动创建父目录. 如果
文件夹已经存在, 且文件夹可写, 会返回成功
tf.gfile.MkDir(dirname) # 在dirname处创建一个文件夹
tf.gfile.Remove(filename) # 删除filename
tf.gfile.Rename(oldname, newname, overwrite=False) # 重命名
tf.gfile.Stat(dirname) # 返回目录的统计数据
tf.gfile.Walk(top, inOrder=True) # 返回目录的文件树

具体的文档可以参照这里(可能需要翻墙)

方法二

如果是一批一批的读取文件, 一般会采用tf.WhoFileReader()tf.train.batch()
tf.train.shuffer_batch()

接下来会重点介绍常用的 tf.gfile.Glob, tf.gfile.FastGFile, tf.WhoFileReader()
tf.train.shuffer_batch()

读取文件一般有两步:

  1. 获取文件列表
  2. 读取文件

如果是批量读取, 还有第三步:创建batch

从代码上手:
在使用PAI的时候, 通常需要在右侧设置读取目录, 代码文件等参数, 这些参数都会通过--XXX的形式传入,tf.flags可以提供了这个功能

import tensorflow as tf
FLAGS = tf.flags.FLAGS
tf.flags.DEFINE_string('buckets', 'oss://XXX', '训练图片所在文件夹')
tf.flags.DEFINE_string('batch_size', '15', 'batch大小')
files = tf.gfile.Glob(os.path.join(FLAGS.buckets,'*.jpg')) # 如我想列出buckets下所有jpg文件路径  

接下来就分两种情况了

  • 小规模读取时建议:tf.gfile.FastGfile()
for path in files:
    file_content = tf.gfile.FastGFile(path, 'rb').read() # 一定记得使用rb读取, 不然很多情况下都会报错
    image = tf.image.decode_jpeg(file_content, channels=3) # 本教程以JPG图片为例
  • 大批量读取时建议:tf.WhoFileReader()
reader = tf.WholeFileReader()  # 实例化一个reader
fileQueue = tf.train.string_input_producer(files)  # 创建一个供reader读取的队列
file_name, file_content = reader.read(fileQueue)  # 使reader从队列中读取一个文件
image_content = tf.image.decode_jpeg(file_content, channels=3)  # 讲读取结果解码为图片
label = XXX  # 这里省略处理label的过程
batch = tf.train.shuffle_batch([label, image_content], batch_size=FLAGS.batch_size, num_threads=4,
                               capacity=1000 + 3 * FLAGS.batch_size, min_after_dequeue=1000)

sess = tf.Session()  # 创建Session
tf.train.start_queue_runners(sess=sess)  # 重要!!! 这个函数是启动队列, 不加这句线程会一直阻塞
labels, images = sess.run(batch)  # 获取结果

现在解释下其中重要的部分

  1. tf.train.string_input_producer, 这个是把files转换成一个队列, 并且需要 tf.train.start_queue_runners 来启动队列
  2. tf.train.shuffle_batch 参数解释
  3. batch_size 批大小, 每次运行这个batch, 返回多少个数据
  4. num_threads 运行线程数, 在PAI上4个就好
  5. capacity 随机取文件范围, 比如你的数据集有10000个数据, 你想从5000个数据中随机取, capacity就设置成5000.
  6. min_after_dequeue 维持队列的最小长度, 这里只要注意不要大于**capacity**即可

如何使用PAI写入数据到OSS

  • 直接使用tf.gfile.FastGFile()写入
tf.gfile.FastGFile(FLAGS.checkpointDir + 'example.txt', 'wb').write('hello world')
  • 通过tf.gfile.Copy()拷贝
tf.gfile.Copy('./example.txt', FLAGS.checkpointDir + 'example.txt')

通过这两种方法, 文件都会出现在 '输出目录/model/example.txt' 下

PAI平台关于Tensorflow的案例有哪些

案例一:如何使用TensorFlow实现图像分类
视频地址:https://help.aliyun.com/video_detail/54948.html
文档介绍:
代码下载:https://help.aliyun.com/document_detail/51800.html

案例二:如何使用TensorFlow自动写歌
文档介绍:
代码下载:https://help.aliyun.com/document_detail/57011.html

如何查看Tensorflow的相关日志

具体请参考:

时间: 2024-10-30 06:51:34

PAI TensorFlow Q&A的相关文章

PAI分布式机器学习平台编程模型演进之路

什么是PAI? PAI的全称是Platform of Artificial Intelligence,主要在使用机器学习做模型训练时提供整套链路.机器学习即服务,把机器学习作为服务对外推出,大家可以在平台上使用比较先进的机器学习算法.将多种深度学习框架集成到PAI中,同时基于深度学习框架包装成更加易用的组件.具备异构的计算服务能力,把CPU计算能力和GPU计算能力统一调度起来,异构的计算能力透明,大家的注意力是哪些机器学习算法可以帮助业务,不用关心底层资源的申请和分配.PAI也支持在线预测服务,

【教程】使用PAI深度学习tensorflow读取OSS教程

在PAI上, 使用TensorFlow读取OSS文件 作者: 万千钧 转载需注明出处 本文适合有一定TensorFlow基础, 且准备使用PAI的同学阅读 目录     1. 如何PAI上读取数据     2. 如何减少读取的费用开支     3. 使用OSS需要注意的问题 1. 在PAI上读取数据 Python不支持读取oss的数据, 故所有调用 python Open(), os.path.exist() 等文件, 文件夹操作的函数的代码都无法执行. 如Scipy.misc.imread()

PAI深度学习Tensorflow框架多机多卡多PS Server使用说明

简介 PAI目前已经上线了支持多机.多卡.多PS Server的TensorFlow服务,目前只支持华北2 Region.华北2 Region因为支持多机多卡功能,适用于大规模数据的训练,相关服务需要收费,有需要的相关机构可以联系我们. 原理说明 Parameter Server节点:用来存储TensorFlow计算过程中的参数.配置多个PS节点,计算参数将会被自动切片并存储在不同的PS节点中,从而减小Worker和PS节点通信过程中的带宽限制的影响. Worker节点:"多机多卡"中

在TensorFlow中对比两大生成模型:VAE与GAN(附测试代码)

项目链接:https://github.com/kvmanohar22/ Generative-Models 变分自编码器(VAE)与生成对抗网络(GAN)是复杂分布上无监督学习最具前景的两类方法. 本项目总结了使用变分自编码器(Variational Autoencode,VAE)和生成对抗网络(GAN)对给定数据分布进行建模,并且对比了这些模型的性能.你可能会问:我们已经有了数百万张图像,为什么还要从给定数据分布中生成图像呢?正如 Ian Goodfellow 在 NIPS 2016 教程中

28款GitHub最流行的开源机器学习项目(一):TensorFlow排榜首

1. TensorFlow TensorFlow 是谷歌发布的第二代机器学习系统.据谷歌宣称,在部分基准测试中,TensorFlow的处理速度比第一代的DistBelief加快了2倍之多. 具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点( Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors).这种灵活的架构可以让使用者在多样化的将计算部署在台式机.服务器或者移动设

【玩转数据系列十二】PAI平台深度学习Caffe框架实现图像分类的模型训练

PAI平台深度学习Caffe框架实现图像分类的模型训练 背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Tensorflow做深度学习做深度学习的网络搭建和训练需要通过PYTHON代码才能使用,对于不太会写代码的同学还是有一定的使用门槛的.本文将介绍另一个深度学习框架Caffe,通过Caffe只需要填写一些配置文件就可以实现图像分类的模型训练.关于P

【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码

背景 最近互联网上出现一个热词就是"freestyle",源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的根据一段主题讲一串rap.freestyle除了考验一个人rap的技巧,其实我觉得最难的是如何在短时间内在脑海中浮现出有韵律的歌词. PAI平台是阿里云人工智能平台,在上面可以通过最简单的拖拉拽的方式,完成对各种结构化以及非结构化数据的处理.因为有了PAI,这种自动生成歌词的事情都不再成为难题.我现在不光可以

【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)

背景 最近互联网上出现一个热词就是"freestyle",源于一个比拼rap的综艺节目.在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的根据一段主题讲一串rap.freestyle除了考验一个人rap的技巧,其实我觉得最难的是如何在短时间内在脑海中浮现出有韵律的歌词. 本文会介绍如何自动生成歌词,到底什么工具有这样的功效呢?答案是PAI.PAI平台是阿里云人工智能平台,在上面可以通过最简单的拖拉拽的方式,完成对各种结构化以及非结构化数据的处理

大规模深度学习优化技术在PAI平台中的应用及实践

1. 前言 自2012年Deep Learning的代表模型AlexNet在ImageNet大赛中力压亚军,以超过10个百分点的绝对优势夺得头筹之后,依托于建模技术的进步.硬件计算能力的提升.优化技术的进步以及海量数据的累积,Deep Learning在语音.图像以及文本等多个领域不断推进,相较于传统作法取得了显著的效果提升.   工业界和学术界也先后推出了用于Deep Learning建模用途的开源工具和框架,包括Caffe.Theano.Torch.MXNet.TensorFlow.Chai