Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

开发镜像如何使用 #5427

Closed
shuaidan0412 opened this issue Nov 7, 2017 · 20 comments
Closed

开发镜像如何使用 #5427

shuaidan0412 opened this issue Nov 7, 2017 · 20 comments
Assignees
Labels
Good Question User 用于标记用户问题

Comments

@shuaidan0412
Copy link

  1. 我先拉取0.10.0的开发镜像。 docker pull paddlepaddle/paddle:0.10.0-dev
  2. docker启动镜像。 docker run -it --rm -v /Users/devin/gimi/paddle:/paddle paddlepaddle/paddle:0.10.0-dev /bin/bash

然后就不知道再做什么了?
我尝试运行一些你们提供的 python 文件,头文件都直接报不包含。
import paddle.v2 as paddle

然后pip list ,发现没有paddle 相关的包。
后面我又下载了 生产镜像。0.10.0rc3-noavx
发现包含了 paddle.v2 没错。

所以想问问:

  1. 开发镜像还需要做什么? 才能够测试一些demo && 开始开发
  2. 开发镜像和生产镜像有什么区别?

谢谢

@lcy-seso lcy-seso added the User 用于标记用户问题 label Nov 7, 2017
@shuaidan0412 shuaidan0412 changed the title 生产镜像如何开发镜像开发 开发镜像如何使用 Nov 7, 2017
@gongweibao
Copy link
Contributor

gongweibao commented Nov 7, 2017

关于镜像的使用说明在这里

简单来说,区分开发镜像和生成镜像的原因在于他们的大小。开发镜像里边包含了完整的开发环境,现在有4.4G左右;而生产镜像只要有运行环境就可以了,一般只有1.3G左右(甚至更小,unbuntu基础镜像只有122M左右)。在kubernets集群中跑大量任务的时候,分发生产镜像可以节省大量的网络流量。

可以把开发镜像当做一个编译器。

@shuaidan0412
Copy link
Author

这个我之前就看过。
我总共2个镜像。
paddlepaddle/paddle 0.10.0-dev 603b457f2bcf 5 months ago 2.31GB
paddlepaddle/paddle 0.10.0rc3-noavx 7a1b64aaf41f 6 months ago 519MB

第二个镜像,可以直接运行一些demo;但是 0.10.0-dev 不可以。
这个应该是开发镜像吧。
我想问:

  1. 我应该怎么做,才能让 0.10.0-dev 这个镜像也能够运行 一些demo ,然后自己做一些开发呢?
  2. 这2个镜像,在基本的使用上 有区别么?

@shuaidan0412
Copy link
Author

文档中


通过Docker容器开发PaddlePaddle
开发人员可以在Docker开发镜像中开发PaddlePaddle。这样开发人员可以以一致的方式在不同的平台上工作 - Linux,Mac OS X和Windows。

制作PaddlePaddle开发镜像

这个是必须么? 我理解的是 这个是要自己修改一些 paddle的源码,做自己的镜像才需要

@gongweibao
Copy link
Contributor

我应该怎么做,才能让 0.10.0-dev 这个镜像也能够运行 一些demo ,然后自己做一些开发呢?

编译安装paddle,或者直接安装paddle

这2个镜像,在基本的使用上 有区别么?

生成镜像里边做开发的话,需要安装开发环境,就变成了开发镜像+可运行程序。无其他的差别。

这个是必须么? 我理解的是 这个是要自己修改一些 paddle的源码,做自己的镜像才需要

可以不用做自己的镜像。使用的话用生产镜像就够了。相当于paddle的一个release版本。

@shuaidan0412
Copy link
Author

我理解的是,直接使用 docker 安装,就已经包含了 所有的环境。
docker run -it --rm paddlepaddle/paddle:0.10.0-dev /bin/bash

请问你提到的还需要编译安装paddle, 是还需要怎么做呢?有相应的命令么,谢谢

@gongweibao
Copy link
Contributor

从源代码编译:https://github.com/PaddlePaddle/Paddle/blob/develop/Dockerfile#L88

bash /paddle/paddle/scripts/docker/build.sh

编译完了会有提示如何进行安装

@shuaidan0412
Copy link
Author

都没有在哪里的文档 找到需要这么做呢......

@shuaidan0412
Copy link
Author

我现在的做法是:

  1. 将本地的 /Users/devin/gimi/paddle (里面包含了git拉下来的 Paddle) 挂载到 /paddle
    2.然后在运行 bash /paddle/Paddle/paddle/scripts/docker/build.sh

提示:

/paddle/Paddle/paddle/scripts/docker/build.sh: line 53: cmake: command not found
============================================
Building in /paddle/build ...
============================================
/paddle/Paddle/paddle/scripts/docker/build.sh: line 76: make: command not found
========================================
Generate /paddle/build/Dockerfile ...
========================================
If you need to install PaddlePaddle in develop docker image,please make install or pip install build/python/dist/*.whl.

@gongweibao
Copy link
Contributor

刚才说到,在开发镜像中进行操作。。。。

@shuaidan0412
Copy link
Author

我是在开发镜像中进行操作的,只是git拉取的代码 在外面挂载的目录 , 这个有影响么?

@shuaidan0412
Copy link
Author

开发镜像中 拉取代码也是一样的效果

@typhoonzero
Copy link
Contributor

typhoonzero commented Nov 8, 2017

将本地的 /Users/devin/gimi/paddle (里面包含了git拉下来的 Paddle) 挂载到 /paddle
2.然后在运行 bash /paddle/Paddle/paddle/scripts/docker/build.sh

路径不对吧,应该是mount /Users/devin/gimi/paddle/Paddle到容器里的/paddle然后bash /paddle/paddle/scripts/docker/build.sh。请仔细看上面命令的报错,已经提示了问题所在。

编译需要使用的docker镜像的tag需要是包含-dev

@typhoonzero
Copy link
Contributor

@shuaidan0412 开发镜像,只包含paddle编译环境,没有默认安装paddle,主要是用来编译paddle的docker镜像,比如如果当前目录包含clone下来的paddle代码,执行docker run -it --rm -v $(pwd):/paddle paddlepaddle/paddle:latest-dev bash /paddle/paddle/scripts/docker/build.sh 可以完成编译。

如果仅需要执行训练过程,执行类似docker run -v $PWD:/work paddle /work/train.py (假设当前路径包含训练程序train.py)

相关的文档确实需要更新下,这里有之前的一个计划#4382 会尽快更新首页的文档。

@shuaidan0412
Copy link
Author

$ docker run -it --rm -v /Users/sd/gimi/paddle/Paddle:/paddle paddlepaddle/paddle:0.10.0-dev bash /paddle/paddle/scripts/docker/build.sh

  • set +xe

    Configuring cmake in /paddle/build ...
    -DCMAKE_BUILD_TYPE=Release
    -DWITH_DOC=OFF
    -DWITH_GPU=OFF
    -DWITH_MKLDNN=ON
    -DWITH_MKLML=ON
    -DWITH_AVX=ON
    -DWITH_GOLANG=ON
    -DWITH_SWIG_PY=ON
    -DWITH_C_API=OFF
    -DWITH_PYTHON=ON
    -DWITH_SWIG_PY=ON
    -DCUDNN_ROOT=/usr/
    -DWITH_STYLE_CHECK=OFF
    -DWITH_TESTING=ON
    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

-- Found Paddle host system: ubuntu, version: 14.04.5
-- Found Paddle host system's CPU: 2 cores
-- The CXX compiler identification is GNU 4.8.4
-- The C compiler identification is GNU 4.8.4
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error at CMakeLists.txt:22 (project):
No CMAKE_Go_COMPILER could be found.

Tell CMake where to find the compiler by setting either the environment
variable "GO_COMPILER" or the CMake cache entry CMAKE_Go_COMPILER to the
full path to the compiler, or to the compiler name if it is in the PATH.

-- Configuring incomplete, errors occurred!
See also "/paddle/build/CMakeFiles/CMakeOutput.log".
============================================
Building in /paddle/build ...
============================================
make: *** No targets specified and no makefile found. Stop.
========================================
Generate /paddle/build/Dockerfile ...
========================================
If you need to install PaddlePaddle in develop docker image,please make install or pip install build/python/dist/*.whl.

麻烦问问需要怎么解决呢?我用的 MAC 安装的docker

@helinwang
Copy link
Contributor

@shuaidan0412 谢谢提出问题!编译最新的develop分支请使用paddlepaddle/paddle:latest-dev镜像:
docker run -it --rm -v /Users/sd/gimi/paddle/Paddle:/paddle paddlepaddle/paddle:latest-dev bash /paddle/paddle/scripts/docker/build.sh
或者
docker run -it --rm -v /Users/sd/gimi/paddle/Paddle:/paddle paddlepaddle/paddle:latest-dev也可以(docker镜像默认自动运行bash /paddle/paddle/scripts/docker/build.sh

@shuaidan0412
Copy link
Author

还是有错,最后的错误:
Total errors found: 0
[ 22%] Built target paddle_cuda
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

中间一个错误:
[ERROR] Update failed for golang.org/x/net: Cannot detect VCS
[WARN] Unable to checkout google.golang.org/grpc
[ERROR] Update failed for google.golang.org/grpc: Cannot detect VCS
Scanning dependencies of target dim_test

尝试了用代理和不用代理,都是一样的。用的latest-dev。 放弃的感觉。
等你们出详细的文档吧

@kuke
Copy link
Contributor

kuke commented Nov 14, 2017

@shuaidan0412 应该是google.golang.org被墙了的问题,如果用代理可以打开这个网页吗?

@shuaidan0412
Copy link
Author

代理 可以打开

@kuke
Copy link
Contributor

kuke commented Nov 17, 2017

@shuaidan0412 应该是你没有使用全局代理,所以在命令行中仍然无法连接google.golang.org。有个简单的解决办法,如果你不用分布式训练,就不用装Go,在build.sh中设置-DWITH_GOLANG=OFF

@gongweibao
Copy link
Contributor

Feel free to reopen it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Good Question User 用于标记用户问题
Projects
None yet
Development

No branches or pull requests

6 participants