背景:Tensornet介绍

 

TensorNet是一个构建在TensorFlow之上针对广告推荐等大规模稀疏场景优化的分布式训练框架。TensorNet的目标是让所有使用TensorFlow的开发者可以快速的、方便的训练出稀疏参数超过百亿的超大模型。

项目地址:https://github.com/Qihoo360/tensornet

目标:安装和编译好环境,运行官方demo

要想执行官方提供的第一个demo 需要先搞定环境,你以为直接把项目官方提供的Dockerfile下载下来直接docker build就行了吗?基本上都会因为网络问题导致失败的。

你可以亲自试一下,如果成功就祝好再见,失败的话可以往下看,我来帮你。

我修改后的快速成功版Dockerfile

请下载后保存为Dockerfile:

FROM ubuntu:18.04
RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean
RUN apt-get update && apt-get install wget -y && \
    apt-get install python3.6 -y && \
    apt-get install python3-pip -y && \
    apt-get install git -y && \
    apt-get install libssl-dev -y && \
    apt-get install lib32z1-dev -y && \
    apt-get install curl -y

RUN wget https://gh.api.99988866.xyz/https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-linux-x86_64 && \
    mv bazel-3.1.0-linux-x86_64 /usr/local/bin/bazel && \
    chmod a+x /usr/local/bin/bazel

RUN ln -s /usr/bin/python3.6 /usr/bin/python

RUN pip3 install --upgrade pip && \
    pip3 install tensorflow==2.3.0 -i https://mirrors.aliyun.com/pypi/simple/

RUN wget https://download.open-mpi.org/release/open-mpi/v1.4/openmpi-1.4.5.tar.gz && \
    mkdir -p /root/opt && \
    tar -zxf openmpi-1.4.5.tar.gz -C /root/opt/ && \
    mv /root/opt/openmpi-1.4.5 /root/opt/openmpi && \
    cd /root/opt/openmpi && \
    ./configure CFLAGS="-fPIC" CXXFlAGS="-fPIC" --prefix=/root/opt/openmpi --enable-static && \
    make -j20 && \
    make install

RUN git clone https://github.com/Qihoo360/tensornet.git && \
    cd /tensornet && \
    sed -i s@https://github.com/tensorflow/@https://gh.api.99988866.xyz/https://github.com/tensorflow/@g WORKSPACE && \
    bash configure.sh --openmpi_path /root/opt/openmpi && \
    bazel build -c opt //core:_pywrap_tn.so && \
    cp -f /tensornet/bazel-bin/core/_pywrap_tn.so /tensornet/tensornet/core

ENV PATH "/root/opt/openmpi/bin:${PATH}"
ENV PYTHONPATH "/tensornet:${PYTHONPATH}"
ENV LD_LIBRARY_PATH="/root/opt/openmpi/lib:${LD_LIBRARY_PATH}"

CMD ["python", "-c", "import tensorflow as tf; import tensornet as tn; print(tn.version)"]

然后执行build:

nohup docker build -f Dockerfile -t tensornet-image . > dockerbuild.log  2>&1 &

看到这个就表示构建成功:

Successfully built b2fa9eec59cc

相对于原版文件的修改点讲解:

  1. 替换apt的源为阿里云的。默认的源是ubuntu官网的,特别特别特别慢。
  2. install python3.6而不是3.7(直接删掉这行应该也行,但我没试过)。因为ubuntu18.04里面已经带了3.6,如果再装个3.7导致多个环境,那么后面pip安装tensorflow的时候会有点问题。既然你想一键生成环境不要人工干预,就只留一个3.6版本吧!
  3. bazel的release文件从github上下载超级超级慢,所以我找到一个免费加速下载的方式:在要下载的url前面加个GitHub 文件加速 
    ps:git clone的免费加速方式很多,但是release文件下载,我暂时只找到这一个最方便的方式。
  4. pip下载tensorflow特别慢,要用国内镜像,比如阿里云
  5. bazel构建的时候还会根据WORKSPACE文件里的地址下载文件,github的项目依然可以考虑用GitHub 文件加速

构建成功之后

启动docker以及安装和启动jupyter,执行demo咯!

#查看镜像列表
docker images
#启动一个使用此镜像的容器,注意net=host是为了jupyter使用端口让别的机器能访问到
docker run --name tensornet-v1 --net=host -it tensornet-image bash
#安装jupyter
pip install jupyter -i https://mirrors.aliyun.com/pypi/simple/
#启动jupyter,建议在/tensornet文件夹执行如下命令
jupyter notebook --generate-config
jupyter notebook password
nohup jupyter notebook --ip='0.0.0.0' --port=9999 --allow-root --no-browser > /var/log/jupyter.log 2>&1 &

打开浏览器访问此ip:9999

 

demo的这个部分别忘了修改成实际路径/tensornet,之后的不再赘述了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐