OCRGPU: PaddleServing部署流程记录(cuda10.1)

OCRGPU: PaddleServing部署流程记录(cuda10.1),第1张

准备工作:

其中--gpus all 需要提前安装 nvidia-container-toolkit (即 nvidia-docker 的升级版)表示允许容器访问使用所有gpu(或指定gpu设备序列id,如--gpus 0或--gpus 0,1,2)

-e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all 等docker容器启动参数可能在部分场景下需要使用但本次部署未使用到

容器已经预安装python 3.5、3.7、3.8等常用版本,默认python3为3.5

// 或者获取服务端模型进行转换,(测试ch_ppocr_server_v2.0_rec和ch_ppocr_server_v2.0_det发现无效且返回错误码err_no:5)

获取用于测试的数据集(可选)

启动服务并将日志输出至log.txt(在同级目录下的./Pipelinexxxx/pipeline.log也记录有一部分启动运行的日志)

运行客户端访问服务测试

关于坐标,直接读取如下中的dt_boxes_list或dt_boxes_list[0]都可获得正常的坐标,但需要自己做格式处理(直接用str()函数处理示例图片结果得到的文本字符如dt_boxes_list将得到 [array([[[292, 298], [332, 298], [345, 848], [305, 848]], [[345, 298], [377, 298], [382, 660], [350, 660]]], dtype=int16)] ):

在尝试部署环境前未确认各版本对应关系就进行安装容易出问题,目前我使用PaddleOCR部署GPU的pdserving和hubserving识别环境均失败,异常为

通过各种命令查询版本未发现有误,除了我病急乱投医自己去直接pip3.7 install torch 的版本打印需求为cuda10.2(PaddleOCR环境没有这个包,且后来发现根据网文介绍还需要安装指定torch版本的基础上进行测试)

部分文章提到可能是paddle版本对不上,这个暂未尝试

2021/12/02

发现确实是paddle版本对不上,docker_hub上的镜像容器已经携带配套的paddle,但我按文档来一步步安装时,文档中安装paddle的步骤会把镜像容器中的版本卸载掉;

一、报错分析

Python版本不匹配导致。用户使用的是32位Python,但是对应的32位pip没有PaddlePaddle源。

二、解决方案

1、方案1:

请用户使用64位的Python进行PaddlePaddle安装。

2、方案2:

用户明确安装Paddle的python位置,并切换到该python进行安装。可能需要使用python -m pip install paddlepaddle命令确保paddle是安装到该python中。

3、方案3

“No such file or directory”一般是没有找到文件的位置,属性中将它找不到的文件的路径添加到包含目录那一列里。代码没有任何错误。建议你将scanf("%f\n",&r)里的\n去掉。改成scanf("%f",&r)

扩展资料

其他程序报错汇总集合:

1、Windows环境下,使用pip install时速度慢

解决方案:

在pip后面加上参数-i指定pip源,使用国内源获取安装包即可。

2、使用pip install时报错,PermissionError: [WinError 5]

解决方法:

选择“以管理员身份运行”运行CMD,重新执行安装过程, 使用命令sudo pip install paddlepaddle

3、本地使用import paddle时报错,ModuleNotFoundError:No module named ‘paddle’

解决方案:

用户明确安装Paddle的python位置,并切换到该python进行安装。可能需要使用python -m pip install paddlepaddle命令确保paddle是安装到该python中。

摘要:PaddlePaddle的负责人徐伟认为,没有一家公司能够完全主导这个领域,要单一公司的深度学习框架完全主导该领域,就等同于用同一种程序语言开发所有的软件,未来深度学习的生态系统会因使用场景有最佳的框架使用。

PaddlePaddle会和Python一样流行吗?

深度学习引擎最近经历了开源热。2013年Caffe开源,很快成为了深度学习在图像处理中的主要框架,但那时候的开源框架还不多。随着越来越多的开发者开始关注人工智能,AI 巨头们纷纷选择了开源的道路:2015年9月Facebook开源了用于在Torch上更快速地训练神经网络的模块,11月Google开源 TensorFlow,2016年1月微软开源CNTK。最近,百度也宣布开源深度学习引擎 PaddlePaddle。

在这场深度学习的框架之争中,究竟哪家能够胜出?PaddlePaddle的负责人徐伟认为,没有一家公司能够完全主导这个领域,要单一公司的深度学习框架完全主导该领域,就等同于用同一种程序语言开发所有的软件,未来深度学习的生态系统会因使用场景有最佳的框架使用。

话虽如此,对于程序员来说,如果选择了更为流行的编程语言,就会有更多可使用的库,也能更轻松的做出好的产品。而紧跟程序语言的发展历史,我们发现最终最为流行的,总是最容易上手的。

Python是非常好的例子,在编程语言排行榜上,2014年Python只有第六名。但随着大量年轻程序员的涌入,他们更愿意选择简单、易学、文档好的Python作为优先的学习对象,很快C、C++程序员很多也开始使用Python编程了。

而今天发生在深度学习框架上的竞争,似乎也在重演编程语言的历史。

去年TensorFlow发布的时候,对于它的质疑声不绝于耳。首先是对单机版TensorFlow的质疑,认为它在和Caffe、Torch和 Theano相比并没有优势。而在Google开源了分布式版本后,人们说它比Caffe慢,比Torch臃肿,而且不能进行太大调整。但如今在HackerNews上关于最受欢迎深度学习工具的投票,TensorFlow获得第一,得票率是第二名的接近2.6倍。

程序员Vonnik解释了这个现象:使用TensorFlow的大部分都是来自Udacity课程的学生,他们大部分都没什么经验。但正是这些学生和初学者,而非那些经验丰富的资深人士,把Python变成了全球最流行的语言,也把TensorFlow推到了排名第一的位置。

从Python和TensorFlow的历史来看,我们有理由认为,最为简单、易用的深度学习框架,将会在未来的竞争胜出。

百度 PaddlePaddle

在和几款最常用的深度学习框架TensorFlow、Torch、Caffe比较之前,我们先重点介绍新出现的PaddlePaddle。

Paddle其实已经有多年历史了。早在 2013 年,百度就察觉到传统的基于单GPU的训练平台,已经无法满足深度神经网络在搜索、广告、文本、语音、图像等领域的训练需求,于是在徐伟的带领下开始搭建Paddle——一个多机并行的CPU/GPU混布的异构计算平台。Paddle从最早的开发到如今的开源,就一直以大规模数据处理和工业化的要求不断改进。我们可以看到PaddlePaddle有很多优异的特性。

Github上介绍,PaddlePaddle有以下特点:

· 灵活

PaddlePaddle支持大量的神经网络架构和优化算法,支持任意复杂RNNs结构,高效处理batch,无需数据填充。简单书写配置文件即可实现复杂模型,比如拥有注意力(Attention)机制、外围记忆层(External Memory)或者用于神经机器翻译模型的深度时序快进网络。

· 高效

为了利用异构计算资源的能力,PaddlePaddle中的每一级都会进行优化,其中包括计算、内存、架构和通信。以下是几个例子:

1.使用SSE/AVX内联函数、BLAS数据库(例如MKL、ATLAS、cuBLAS)和定制化的CPU/GPU Kernal来优化数学运算。

2.高度优化RNNs网络,在没有Padding的情况下,也能处理不同长度的序列。

3.优化的本地和分布式训练,同时支持高纬稀疏模型。

· 可扩展

有了PaddlePaddle,使用多个CPU和GPU以及机器来加速训练可以变得很轻松。 PaddlePaddle能通过优化通信,获得高吞吐量和性能。

· 与产品的连接

PaddlePaddle的部署也很简单。在百度,PaddlePaddle已经被用于产品和服务中,拥有大量用户。应用场景包括预估外卖的出餐时间、预判网盘故障时间点、精准推荐用户所需信息、海量图像识别分类、字符识别(OCR)、病毒和垃圾信息检测、机器翻译和自动驾驶等等。

在PaddlePaddle简单、可扩展的逻辑下,徐伟评价说:“这将使工程师们能够快速、轻松地将深度学习技术应用到他们的产品当中,我们想让更多的人使用人工智能,人工智能对于我们的未来生活是非常重要的。”

深度学习框架对比

PaddlePaddle最主要的类比对象,来自UC伯克利的贾扬清开发的Caffe和Google的 TensorFlow。

这是一张来自Spark Summit 2016的图,PaddlePaddle在开源前就在顶级的行业会议中进行了展示。

PaddlePaddle、Caffe和TensorFlow都可以支持分布式训练,但相比之下PaddlePaddle 有很突出的优势。

PaddlePaddle和Caffe在设计上有一些类似的地方,但是相比Caffe聚焦在视觉领域,PaddlePaddle可以在各种不同的场景中应用。而相比TensorFlow,PaddlePaddle的上手难度更低,也没有太多的Abstraction,速度也会更快。

而在RNN的性能表现上,PaddlePaddle的速度也要优于TensorFlow。

总的来说

1)Caffe具有出色的CNN实现功能的开发语言,在计算机视觉领域,Caffe仍然是最流行的工具包。Caffe的开发语言支持C++和Cuda,速度很快,但是由于一些历史性的遗留架构问题,它的灵活性不够强。而且对递归网络和语言建模的支持很差。Caffe支持所有主流开发系统,上手难度属于中等水平。

2)TensorFlow是一个理想的RNN API实现,它使用了向量运算的符号图方法,使得开发的速度可以很快。TensorFlow支持的比较好的系统只有各种Linux系统和OSX,不过其对语言的支持比较全面,包含了Python、C++和Cuda等,开发者文档写得没有Caffe那么全面,所以上手比较难,在性能方面,也不如Caffe及PaddlePaddle。

3)Torch没有跟随Python的潮流,反而选择了C语言实现,用Lua语言进行封装。Torch对卷积网络的支持非常好,运行在C++、C#和Jave等工业语言的速度较快,也不需要额外的编译。但是它的上手难度也很高,对初学者缺乏规范的例子,而且需要先迈过Lua的门槛,这对初学者是很大的障碍。

4)而此次百度的PaddlePaddle性能优先并兼顾灵活,通过使用GPU异构计算来提升每台机器的数据处理能力,获得了业内“相当简洁、设计干净、稳定,速度较快,显存占用较小”等好评。

而在关键的进入门槛上,相比Google TensorFlow和Facebook Torch,PaddlePaddle的上手难度低得多,且拥有非常优秀的业界特征,包括NLP和推荐等应用场景、对RNN很好的支持、高质量代码、以及分布式训练等,已经足以满足大多数AI场景的需求。且PaddlePaddle更加务实,可解决实际问题。

据徐伟介绍,PaddlePaddle将在本月底发布最新版本,全面支持Mac操作系统、以及Cuda8.0和GCC5.4,同时进一步优化了安装过程,可以帮助更多开放者更好地“上手”。

所以我们可以初步下一个结论,在中国的开发环境下,Google TensorFlow和Facebook Torch的上手难度都比较高,TensorFlow最好的训练环境Google Cloud也难以在中国获得支持。而Caffe虽然已经有了多年的积累,但是毕竟目前只是在视觉领域有比较好的发展,而且相比百度能提供的产业链支持,在资源投入上可能会有比较大的局限。相比之下,坐拥中国的本土市场,上手难度低得多的PaddlePaddle,将会有更好的技术和生态的环境。也许不久的将来,PaddlePaddle就会和Python在编程语言中所做的事情一样,成为最流行的深度学习引擎。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/501840.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-16
下一篇2023-06-16

发表评论

登录后才能评论

评论列表(0条)

    保存