PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
21.66k stars 5.44k forks source link

又来新问题了,写了一个py文件但无法执行 #5390

Closed sandycs closed 6 years ago

sandycs commented 6 years ago

py文件用的是线性回归的测试案例 执行语句: docker run -it -v /g/Paddle/paddle/build/test:/work paddle:dev /work/test.py 报错: standard_init_linux.go:185: exec user process caused "exec format error" 这个不知道是啥缘故引起的

系统环境: 1、建立了docker镜像; 2、用WITH_GPU=OFF,WITH_AVX=OFF,WITH_TEST=ON 编译了系统; 运行结果如下:

Successfully installed paddle-0.10.0 py-paddle-0.10.0 CPack: Create package using DEB CPack: Install projects CPack: - Run preinstall target for: paddle CPack: - Install project: paddle CPack: Create package CPack: - package: /paddle/build/paddle-0.1.1-Linux.deb generated. PaddlePaddle 0.10.0, compiled with with_avx: OFF with_gpu: OFF with_double: OFF with_python: ON with_rdma: OFF with_timer: OFF

系统是WIN10 文档里说到这个语句运行单元测试: docker run -it -v $(pwd):/paddle paddle:dev bash -c "cd /paddle/build && ctest"

我运行的结果是:


No test configuration file found!


Usage

ctest [options]

sandycs commented 6 years ago

我猜测可能是EXEC不认识py文件。所以不会执行 如果使用这个命令: docker run -it -v /g/Paddle/paddle/build/test:/work paddle:dev python /work/test.py 则会报错:

Traceback (most recent call last): File "/work/test.py", line 2, in import paddle.v2 as paddle ImportError: No module named paddle.v2

luotao1 commented 6 years ago

No module named paddle.v2

你可以修改test.py,里面只有一句话import paddle,看是不是正确。

另外,您为什么要自己做paddle的镜像呢?我们有镜像可以直接跑的。

sandycs commented 6 years ago

都是看你们教程。。。 故障依旧: Traceback (most recent call last): File "/work/test.py", line 1, in import paddle ImportError: No module named paddle

你们的教程是这样的: 1、先搭开发环境 2、搭生产环境

教程地址:http://doc.paddlepaddle.org/develop/doc_cn/howto/dev/build_cn.html 所以我的步骤是这样的: 1、docker build -t paddle:dev . 2、docker run --rm -v $PWD:/paddle paddle:dev

我理解第一步就是搭开发环境? 第二步就是编译啊。哪个镜像可以直接跑?

luotao1 commented 6 years ago

您参考下:http://doc.paddlepaddle.org/develop/doc_cn/getstarted/build_and_install/docker_install_cn.html

您贴的是如何进行开发,上面那个链接可以直接pull镜像,然后跑。

sandycs commented 6 years ago

别这样。我上个环境整了3天才断断续续下载好。。重新来一遍我可能要疯掉 帮我解决下我这个问题好吗。。

luotao1 commented 6 years ago

使用生产镜像跑book下的例子,非常简单。

docker pull paddlepaddle/paddle:latest
git clone https://github.com/PaddlePaddle/book.git
cd book
docker run -it --rm -v $(pwd):/book paddlepaddle/paddle:latest /bin/bash

进入容器内:

cd 01.fit_a_line
python train.py
sandycs commented 6 years ago

我刚才去运行docker build -t paddle:prod -f build/Dockerfile ./build这个了 貌似又是一次长征 等长征完了再看看

sandycs commented 6 years ago

@luotao1 亲爱的 始终停留在:3252b16abf4a: Retrying in 1 second 已经快要5个小时了。。一直不动。网络正常,GREATWALL也能翻

luotao1 commented 6 years ago

你是按照我的命令来跑的么?

typhoonzero commented 6 years ago

3252b16abf4a: Retrying in 1 second 这个提示一般都是docker pull layer下不来。如果你翻 GREATWALL的方法是 export http_proxy应该是对docker不生效的,需要docker daemon可以出去才行。参考:https://stackoverflow.com/questions/23111631/cannot-download-docker-images-behind-a-proxy

sandycs commented 6 years ago

执行的这句 docker pull paddlepaddle/paddle:latest

sandycs commented 6 years ago

@typhoonzero 谢谢。我用的是shadowsocks。不用设置PROXY,直接可以访问。 我也登录到docker上ping过,跨越GREATWALL没有障碍 跑了一晚上 今天早上看了下:

latest: Pulling from paddlepaddle/paddle aafe6b5e13de: Downloading [==================================================>] 46.79MB/46.79MB 0a2b43a72660: Pulling fs layer 18bdd1e546d2: Download complete 8198342c3e05: Download complete f56970a44fd4: Download complete 2fed150c3992: Download complete 32e6301d2455: Downloading [==================================================>] 418.2MB/418.2MB 40eb58d04d09: Download complete 35be7e7e5168: Download complete unexpected EOF

打算再跑一次

sandycs commented 6 years ago

汇报下新情况 @luotao1 跑了一早上。如今还停在:

latest: Pulling from paddlepaddle/paddle f5c64a3438f6: Pull complete 3b61febd4aef: Pull complete 9d99b9777eb0: Pull complete d010c8cf75d7: Pull complete 39a8dd7b3706: Downloading [====================> ] 178.9MB/428.9MB 75458f46d6c3: Retrying in 1 second 39a8dd7b3706: Downloading [=========> ] 78.38MB/428.9MB 6f8f3b44185b: Download complete 3bcf5bf63d9d: Download complete cc184c0686a8: Download complete

typhoonzero commented 6 years ago

还是网络的问题吧,试下 docker pull docker.paddlepaddle.org/paddlepaddle/paddle

sandycs commented 6 years ago

谢谢楼上解决了。

新的问题出现了。运行 python train.py 报错:Illegal instruction 跟踪语句发现。错误出现在这一句: paddle.init(use_gpu=with_gpu, trainer_count=1) 我猜测可能是因为我的GPU不支持? 所以改为 paddle.init(use_gpu='0', trainer_count=1) 问题依旧,我猜可能use_gpu是整形的? 又改为 paddle.init(use_gpu=0, trainer_count=1) 问题依旧

sandycs commented 6 years ago

感谢 @typhoonzero @luotao1 两位大神。 我感觉已经马上就要解决了,烦请再帮忙下带小弟过这个门槛 一路走来真是不容易

sandycs commented 6 years ago

说实话真的搞得有点乱了。。。 一会儿dev一会儿lateest。分不清楚 光是安装编译的文档就有3个,又不是完全一样。 作为初学者确实很懵逼

刚才搜了下FAQ,里面说我这个问题是我选择了错误的二进制版本。 但是我是按照 @luotao1 的指令来的啊?

docker pull paddlepaddle/paddle:latest (这一句我改为了docker pull docker.paddlepaddle.org/paddlepaddle/paddle:latest) git clone https://github.com/PaddlePaddle/book.git cd book docker run -it --rm -v $(pwd):/book paddlepaddle/paddle:latest /bin/bash

luotao1 commented 6 years ago

docker images看下。 如果换了docker.paddlepaddle.org/paddlepaddle/paddle:latest 就要使用docker run -it --rm -v $(pwd):/book docker.paddlepaddle.org/paddlepaddle/paddle:latest /bin/bash

sandycs commented 6 years ago

谢谢 @luotao1 我今天用的是这样的步骤。全部如下:

> G:\Paddle\paddle\book>docker pull docker.paddlepaddle.org/paddle:0.10.0
0.10.0: Pulling from paddle
cf0a75889057: Pull complete
c8de9902faf0: Pull complete
a3c0f7711c5e: Pull complete
e6391432e12c: Pull complete
624ce029a17f: Pull complete
6e38187056d6: Pull complete
6a63c6172eed: Pull complete
383a2a9d6698: Pull complete
Digest: sha256:3d59e3e6dc5048a41e54bd0450075b4f2a186ac10911195f7219a375254c9dd5
Status: Downloaded newer image for docker.paddlepaddle.org/paddle:0.10.0

> G:\Paddle\paddle\book>docker images
> REPOSITORY                       TAG                            IMAGE ID            CREATED             SIZE
> paddle                           dev                            f05cac1b1ce9        3 days ago          4.25GB
> nvidia/cuda                      8.0-cudnn5-devel-ubuntu16.04   00b49fe86853        12 days ago         1.84GB
> docker.paddlepaddle.org/paddle   0.10.0                         efb209ef9426        5 months ago        749MB
> d4w/nsenter                      latest                         9e4f13a0901e        13 months ago       83.8kB

> G:\Paddle\paddle\book>docker run -it --rm -v /g/Paddle/paddle/book:/book docker.paddlepaddle.org/paddle:0.10.0 /bin/bash
> root@f72bb774223e:/# cd book
> root@f72bb774223e:/book#  cd 01.fit_a_line/
> root@f72bb774223e:/book/01.fit_a_line# dir
> README.cn.md  README.md  image  index.cn.html  index.html  train.py
> root@f72bb774223e:/book/01.fit_a_line# python train.py
> Illegal instruction
> root@f72bb774223e:/book/01.fit_a_line#

如上,报错:Illegal instruction

luotao1 commented 6 years ago

Illegal instruction

是不是你的docker版本有问题呀,你可以上网搜下,paddle报错不是这样的。

sandycs commented 6 years ago

@luotao1 这是执行了python train.py的报错。严格来说是python的报错啊,和docker无关 错误在执行这一句 paddle.init(use_gpu=with_gpu, trainer_count=1)

sandycs commented 6 years ago

docker本身没有报错。这个Illegal instruction我记得你放在FAQ里有啊 但是那个解决方案好像不能奏效

luotao1 commented 6 years ago

with_gpu是true还是false呢

luotao1 commented 6 years ago

http://doc.paddlepaddle.org/develop/doc_cn/faq/build_and_install/index_cn.html#illegal-instruction 你可以确认下你的机器是否支持avx指令

sandycs commented 6 years ago

我的语句就这么多啊。没有赋值WITH_GPU docker pull docker.paddlepaddle.org/paddle:latest git clone https://github.com/PaddlePaddle/book.git cd book docker run -it --rm -v $(pwd):/book docker.paddlepaddle.org/paddle:latest /bin/bash 然后 cd 01.fit_a_line python train.py

sandycs commented 6 years ago

@luotao1 确认了下不支持AVX... 那么我用这个语句好像就不行了: docker pull docker.paddlepaddle.org/paddle:0.10.0-noavx

sandycs commented 6 years ago

我看到这边有这么一句话: 注:在0.10.0之后的版本,PaddlePaddle都可以自动判断硬件是否支持AVX,所以无需判断AVX即可使用 虽然我的CPU不支持。但是。。。直接latest的照理来说也应该可以?

luotao1 commented 6 years ago

请问这句话,您是从哪儿看到的呢?

Yancey1989 commented 6 years ago

@sandycs 可否使用docker.paddlepaddle.org/paddle:0.10.0-noavx 确认一下是否AVX的问题呢?

Yancey1989 commented 6 years ago

另外可以用gdb看下core dump的堆栈信息吗?

sandycs commented 6 years ago

@luotao1 在:http://doc.paddlepaddle.org/develop/doc_cn/getstarted/build_and_install/docker_install_cn.html这里看到的。CTRL+F搜一下就有

sandycs commented 6 years ago

@Yancey1989 你好。

docker.paddlepaddle.org/paddle:0.10.0-noavx 这个会提示不存在。我预计是docker.paddlepaddle.org没有NOAVX版本的镜像

sandycs commented 6 years ago

@luotao1 我问题还是没解决啊。。哭死了

luotao1 commented 6 years ago

docker.paddlepaddle.org/paddle:0.10.0rc3-noavx

sandycs commented 6 years ago

感谢 @luotao1 。终于让我往前走了一步。 不过book的第一个train.py还是没有能运行起来。报错如下:

python train.py I1110 01:18:01.401505 17 Util.cpp:166] commandline: --use_gpu=False --trainer_count=1 Traceback (most recent call last): File "train.py", line 83, in main() File "train.py", line 16, in main cost = paddle.layer.square_error_cost(input=y_predict, label=y) AttributeError: 'module' object has no attribute 'square_error_cost'

sandycs commented 6 years ago

问题好像是说没有找到:square_error_cost

lcy-seso commented 6 years ago

这个问题是因为之前之前将 mse_cost 重命名为 square_error_cost,可见此 PR https://github.com/PaddlePaddle/Paddle/pull/3845 和与PR相关的issue。如果不想再更新相关的代码,我觉得可以将 16 行的 :

cost = paddle.layer.square_error_cost(input=y_predict, label=y)

替换为:

cost = paddle.layer.mse_cost(input=y_predict, label=y)

试试看。

sandycs commented 6 years ago

@lcy-seso 还是报错 serialize_for_inference 找不到。 我搜了下。还是因为版本问题

这样下去不是办法。我可以去PULL一个新版本。问题是怎么PULL到最新的NO-AVX版本呢? 目前RC3是不是最新的? 我指的是:docker.paddlepaddle.org下的

luotao1 commented 6 years ago

能请 @Yancey1989 发布一个最新的no-avx版本么?

sandycs commented 6 years ago

@Yancey1989 请帮忙!

Yancey1989 commented 6 years ago

好的,正在build,稍后会push到registry server上。

Yancey1989 commented 6 years ago

貌似develop分支的代码有些问题,https://github.com/PaddlePaddle/Paddle/issues/5535 ,还请再稍等下。

Yancey1989 commented 6 years ago

Hi @sandycs @luotao1 已push到了registry server上 docker pull docker.paddlepaddle.org/paddle:latest-noavx

sandycs commented 6 years ago

谢谢楼上的大兄弟。有问题我再来汇报