提交 be9958c6 编写于 作者: A Aston Zhang

translate notebook

上级 bce6fa63
# 使用AWS运行代码
当本地机器的计算资源有限时,我们可以通过云计算服务获取更强大的计算资源来运行本书中的深度学习代码。本节将介绍如何在AWS(亚马逊的云计算服务)上申请实例并通过Jupyter notebook运行代码。本节中的例子基于申请含一个K80 GPU的“p2.xlarge”实例和安装CUDA及相应GPU版本的MXNet。申请其他类型的实例或安装其他版本的MXNet的方法同本节类似。
当本地机器的计算资源有限时,我们可以通过云计算服务获取更强大的计算资源来运行本书中的深度学习代码。本节将介绍如何在AWS(亚马逊的云计算服务)上申请实例并通过Jupyter笔记本运行代码。本节中的例子基于申请含一个K80 GPU的“p2.xlarge”实例和安装CUDA及相应GPU版本的MXNet。申请其他类型的实例或安装其他版本的MXNet的方法同本节类似。
## 申请账号并登陆
......@@ -46,7 +46,7 @@ EC2提供了大量的有着不同配置的实例。如图11.11所示,在第二
如图11.16所示,当实例状态(Instance State)变绿后,右击实例并选择“Connect”,这时就可以看到访问该实例的方法了。例如在命令行输入
```bash
```{.python .input}
ssh -i "/path/to/key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com
```
......@@ -59,7 +59,7 @@ ssh -i "/path/to/key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com
如果你登录的是一个GPU实例,需要下载并安装CUDA。首先,更新并安装编译需要的包:
```bash
```{.python .input}
sudo apt-get update && sudo apt-get install -y build-essential git libgfortran3
```
......@@ -70,14 +70,14 @@ Nvidia一般每年会更新一次CUDA大版本。这里我们下载作者写本
获取下载地址后,我们将下载并安装CUDA9.0,例如
```bash
```{.python .input}
wget https://developer.download.nvidia.com/compute/cuda/9.1/secure/Prod/local_installers/cuda_9.1.85_387.26_linux.run
sudo sh cuda_9.1.85_387.26_linux.run
```
点击“Ctrl+C”跳出文档浏览,并回答以下几个问题。
```bash
```{.python .input}
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
(y)es/(n)o/(q)uit: y
......@@ -97,13 +97,13 @@ Install the CUDA 9.1 Samples?
当安装完成后,运行下面的命令就可以看到该实例的GPU了。
```bash
```{.python .input}
nvidia-smi
```
最后,将CUDA加入到库的路径中,以方便其他库找到它。
```bash
```{.python .input}
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda-9.1/lib64" >>.bashrc
```
......@@ -111,14 +111,14 @@ echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda-9.1/lib64" >>.b
我们已在[“安装和运行”](../chapter_prerequisite/install.md)一节中介绍了Linux用户获取本书代码并安装运行环境的方法。首先,安装Linux版的Miniconda(网址:https://conda.io/miniconda.html ),例如
```bash
```{.python .input}
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
```
这时需要回答下面几个问题:
```bash
```{.python .input}
Do you accept the license terms? [yes|no]
[no] >>> yes
Do you wish the installer to prepend the Miniconda3 install location
......@@ -128,7 +128,7 @@ to PATH in your /home/ubuntu/.bashrc ? [yes|no]
安装完成后,运行一次`source ~/.bashrc`让CUDA和conda生效。接下来,下载本书代码、安装并激活conda环境
```bash
```{.python .input}
mkdir gluon_tutorials_zh && cd gluon_tutorials_zh
curl https://zh.gluon.ai/gluon_tutorials_zh.tar.gz -o tutorials.tar.gz
tar -xzvf tutorials.tar.gz && rm tutorials.tar.gz
......@@ -138,31 +138,31 @@ source activate gluon
默认环境里安装了CPU版本的MXNet。现在我们将它替换成GPU版本的MXNet。因为CUDA的版本是9.1,所以安装`mxnet-cu91`。一般来说,如果CUDA版本是x.y,那么相应安装`mxnet-cuxy`
```bash
```{.python .input}
pip uninstall mxnet
pip install mxnet-cu91
```
## 运行Jupyter notebook
## 运行Jupyter笔记本
现在,我们可以运行Jupyter notebook了:
现在,我们可以运行Jupyter笔记本了:
```bash
```{.python .input}
jupyter notebook
```
图11.18显示了运行后可能的输出,其中最后一行为8888端口下的URL。
![运行Jupyter notebook后的输出,其中最后一行为8888端口下的URL。](../img/jupyter.png)
![运行Jupyter笔记本后的输出,其中最后一行为8888端口下的URL。](../img/jupyter.png)
由于创建的实例并没有暴露8888端口,我们可以在本地命令行启动ssh从实例映射到本地8889端口。
```bash
```{.python .input}
# 该命令须在本地命令行运行。
ssh -i "/path/to/key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com -L 8889:localhost:8888
```
最后,把图11.18中运行Jupyter notebook后输出的最后一行URL复制到本地浏览器,并将8888改为8889。点击回车键即可从本地浏览器通过Jupyter notebook运行实例上的代码。
最后,把图11.18中运行Jupyter笔记本后输出的最后一行URL复制到本地浏览器,并将8888改为8889。点击回车键即可从本地浏览器通过Jupyter笔记本运行实例上的代码。
## 关闭不使用的实例
......
# 使用Jupyter Notebook
# 使用Jupyter笔记本
本节介绍如何使用Jypyter notebook编辑和运行本书代码。请确保你已按照[“安装和运行”](../chapter_prerequisite/install.md)一节中的步骤安装好Jupyter notebook并获取了本书代码。
本节介绍如何使用Jypyter笔记本编辑和运行本书代码。请确保你已按照[“安装和运行”](../chapter_prerequisite/install.md)一节中的步骤安装好Jupyter笔记本并获取了本书代码。
## 在本地编辑和运行本书代码
下面我们介绍如何在本地使用Jupyter notebook来编辑和运行本书代码。假设本书代码所在的本地路径为“xx/yy/gluon_tutorials_zh-1.0/”。在命令行模式下进入该路径(`cd xx/yy/gluon_tutorials_zh-1.0`),然后运行命令`jupyter notebook`。这时在浏览器打开 http://localhost:8888 (通常会自动打开)就可以看到Jupyter notebook的界面和本书代码所在的各个文件夹,如图11.1所示。
下面我们介绍如何在本地使用Jupyter笔记本来编辑和运行本书代码。假设本书代码所在的本地路径为“xx/yy/gluon_tutorials_zh-1.0/”。在命令行模式下进入该路径(`cd xx/yy/gluon_tutorials_zh-1.0`),然后运行命令`jupyter notebook`。这时在浏览器打开 http://localhost:8888 (通常会自动打开)就可以看到Jupyter笔记本的界面和本书代码所在的各个文件夹,如图11.1所示。
![本书代码所在的各个文件夹。](../img/jupyter00.png)
我们可以通过点击网页上显示的文件夹访问其中的notebook文件。它们的后缀通常是“ipynb”。
为了简洁起见,我们创建一个临时的“test.ipynb”文件,点击后所显示的内容如图11.2所示。该notebook包括了格式化文本单元(markdown cell)和代码单元(code cell)。其中格式化文本单元中的内容包括“这是标题”和“这是一段正文。”。代码单元中包括两行Python代码。
我们可以通过点击网页上显示的文件夹访问其中的笔记本文件。它们的后缀通常是“ipynb”。
为了简洁起见,我们创建一个临时的“test.ipynb”文件,点击后所显示的内容如图11.2所示。该笔记本包括了格式化文本单元(markdown cell)和代码单元(code cell)。其中格式化文本单元中的内容包括“这是标题”和“这是一段正文。”。代码单元中包括两行Python代码。
![“test.ipynb”文件包括了格式化文本单元和代码单元。](../img/jupyter01.png)
......@@ -41,63 +41,63 @@
![运行代码单元得到输出结果。](../img/jupyter06.png)
当一个notebook包含的单元较多时,我们可以点击菜单栏的“Kernel” $\rightarrow$ “Restart & Run All”,以运行整个notebook中的所有单元。点击菜单栏的“Help” $\rightarrow$ “Edit Keyboard Shortcuts”后可以根据自己的喜好编辑快捷键。
当一个笔记本包含的单元较多时,我们可以点击菜单栏的“Kernel” $\rightarrow$ “Restart & Run All”,以运行整个笔记本中的所有单元。点击菜单栏的“Help” $\rightarrow$ “Edit Keyboard Shortcuts”后可以根据自己的喜好编辑快捷键。
## 高级选项
以下是有关使用Jupyter notebook的一些高级选项。你可以根据自己的兴趣参考其中内容。
以下是有关使用Jupyter笔记本的一些高级选项。你可以根据自己的兴趣参考其中内容。
### 用Jupyter Notebook读写GitHub源文件
### 用Jupyter笔记本读写GitHub源文件
如果你希望为本书内容做贡献,需要修改在GitHub上markdown格式的源文件(.md文件非.ipynb文件)。通过notedown插件,我们就可以使用Jupyter notebook修改并运行markdown格式的源代码。Linux/macOS用户可以执行以下命令获得GitHub源文件并激活运行环境。
如果你希望为本书内容做贡献,需要修改在GitHub上markdown格式的源文件(.md文件非.ipynb文件)。通过notedown插件,我们就可以使用Jupyter笔记本修改并运行markdown格式的源代码。Linux/macOS用户可以执行以下命令获得GitHub源文件并激活运行环境。
```bash
```{.python .input}
git clone https://github.com/mli/gluon-tutorials-zh
cd gluon-tutorials-zh
conda env create -f environment.yml
source activate gluon # Windows 用户运行 activate gluon
```
下面安装notedown插件,运行Jupyter notebook并加载插件:
下面安装notedown插件,运行Jupyter笔记本并加载插件:
```bash
```{.python .input}
pip install https://github.com/mli/notedown/tarball/master
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'
```
如果你希望每次运行Jupyter notebook时默认开启notedown插件,可以参考下面步骤。
如果你希望每次运行Jupyter笔记本时默认开启notedown插件,可以参考下面步骤。
首先,执行下面命令生成Jupyter notebook配置文件(如果已经生成可以跳过)。
首先,执行下面命令生成Jupyter笔记本配置文件(如果已经生成可以跳过)。
```bash
```{.python .input}
jupyter notebook --generate-config
```
然后,将下面这一行加入到Jupyter notebook配置文件的末尾(Linux/macOS上一般在`~/.jupyter/jupyter_notebook_config.py`)
然后,将下面这一行加入到Jupyter笔记本配置文件的末尾(Linux/macOS上一般在`~/.jupyter/jupyter_notebook_config.py`)
```bash
```{.python .input}
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
```
之后,我们只需要运行`jupyter notebook`即可默认开启notedown插件。
### 在远端服务器上运行Jupyter Notebook
### 在远端服务器上运行Jupyter笔记本
有时候,我们希望在远端服务器上运行Jupyter notebook,并通过本地电脑上的浏览器访问。如果本地机器上安装了Linux或者macOS(Windows通过putty等第三方软件也能支持),那么可以使用端口映射:
有时候,我们希望在远端服务器上运行Jupyter笔记本,并通过本地电脑上的浏览器访问。如果本地机器上安装了Linux或者macOS(Windows通过putty等第三方软件也能支持),那么可以使用端口映射:
```bash
```{.python .input}
ssh myserver -L 8888:localhost:8888
```
以上`myserver`是远端服务器地址。然后我们可以使用 http://localhost:8888 打开运行Jupyter notebook的远端服务器`myserver`。我们将在下一节详细介绍如何在AWS实例上运行Jupyter notebook
以上`myserver`是远端服务器地址。然后我们可以使用 http://localhost:8888 打开运行Jupyter笔记本的远端服务器`myserver`。我们将在下一节详细介绍如何在AWS实例上运行Jupyter笔记本
### 运行计时
我们可以通过ExecutionTime插件来对Jupyter notebook的每个代码单元的运行计时。以下是安装该插件的命令。
我们可以通过ExecutionTime插件来对Jupyter笔记本的每个代码单元的运行计时。以下是安装该插件的命令。
```bash
```{.python .input}
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime
......@@ -105,7 +105,7 @@ jupyter nbextension enable execute_time/ExecuteTime
## 小结
* 我们可以使用Jupyter notebook编辑和运行本书代码。
* 我们可以使用Jupyter笔记本编辑和运行本书代码。
## 练习
......
# 如何使用本书
本书将全面介绍深度学习从模型构造到模型训练的方方面面,以及它们在计算机视觉和自然语言处理中的应用。我们将不仅仅阐述算法原理,而且将基于Apache MXNet来演示它们的实现和运行。本书的每一节都是一个Jupyter笔记本,它将文字、公式、图像、代码和运行结果统一在了一起。读者不仅能直接阅读,而且可以运行它们来获得交互式的学习体验。
本书将全面介绍深度学习从模型构造到模型训练的方方面面,以及它们在计算机视觉和自然语言处理中的应用。我们不但将阐述算法原理,而且将基于Apache MXNet来演示它们的实现和运行。本书的每一节都是一个Jupyter笔记本,它将文字、公式、图像、代码和运行结果结合在了一起。读者不仅能直接阅读,而且可以运行它们来获得交互式的学习体验。
## 面向的读者
......
......@@ -20,7 +20,7 @@
第三步,使用Conda创建并激活环境。Conda默认使用国外站点来下载软件,下面可选项配置使用国内镜像加速下载:
```
```{.python .input}
# 使用清华 conda 镜像。
conda config --prepend channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
......@@ -30,19 +30,19 @@ conda config --prepend channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
接下来使用conda创建虚拟环境并安装本书需要的软件。这里`environment.yml`是放置在代码压缩包中的文件,其指定了执行本书代码所需要的软件。
```
```{.python .input}
conda env create -f environment.yml
```
第四步,激活之前创建的环境。
```
```{.python .input}
activate gluon
```
第五步,打开Juputer notebook
第五步,打开Juputer笔记本
```
```{.python .input}
jupyter notebook
```
......@@ -50,7 +50,7 @@ jupyter notebook
有多节代码会自动下载数据集和预训练模型,默认将使用美国站点下载。我们可以在运行Jupyter前指定MXNet使用国内站点下载对应数据:
```
```{.python .input}
set MXNET_GLUON_REPO=https://apache-mxnet.s3.cn-north-1.amazonaws.com.cn/ jupyter notebook
```
......@@ -58,13 +58,13 @@ set MXNET_GLUON_REPO=https://apache-mxnet.s3.cn-north-1.amazonaws.com.cn/ jupyte
第一步,根据操作系统下载Miniconda(网址:https://conda.io/miniconda.html ),它是一个sh文件。然后打开Terminal应用进入命令行来执行这个sh文件,例如
```
```{.python .input}
sh Miniconda3-latest-Linux-x86_64.sh
```
安装时会显示使用条款,按“↓”继续阅读,按“Q”退出阅读。之后需要回答下面几个问题:
```
```{.python .input}
Do you accept the license terms? [yes|no]
[no] >>> yes
Do you wish the installer to prepend the Miniconda3 install location
......@@ -76,7 +76,7 @@ to PATH in your /home/your_name/.conda ? [yes|no]
第二步,下载包含本书全部代码的压缩包,解压后进入文件夹。运行如下命令。
```
```{.python .input}
mkdir gluon_tutorials_zh-1.0 && cd gluon_tutorials_zh-1.0
curl https://zh.gluon.ai/gluon_tutorials_zh-1.0.tar.gz -o tutorials.tar.gz
tar -xzvf tutorials.tar.gz && rm tutorials.tar.gz
......@@ -97,7 +97,7 @@ tar -xzvf tutorials.tar.gz && rm tutorials.tar.gz
第二步,使用下面命令更新运行环境。
```
```{.python .input}
conda env update -f environment.yml
```
......@@ -109,7 +109,7 @@ conda env update -f environment.yml
第一步:卸载CPU版本MXNet。如果你没有安装虚拟环境,可以跳过此步。否则假设你已经完成了安装,那么先激活运行环境,然后卸载CPU版本的MXNet:
```
```{.python .input}
pip uninstall mxnet
```
......@@ -120,7 +120,7 @@ pip uninstall mxnet
第三步:更新虚拟环境。同前一样执行
```
```{.python .input}
conda env update -f environment.yml
```
......
......@@ -30,7 +30,7 @@ y = x.ones_like()
y
```
在Jupyter notebook里,我们可以使用`?`来将文档显示在另外一个窗口中。例如`nd.ones_like?`将得到跟`help(nd.ones_like)`几乎一样的内容,但会显示在额外窗口里。此外,如果使用两个`?`,那么会额外显示实现代码。
在Jupyter笔记本里,我们可以使用`?`来将文档显示在另外一个窗口中。例如`nd.ones_like?`将得到跟`help(nd.ones_like)`几乎一样的内容,但会显示在额外窗口里。此外,如果使用两个`?`,那么会额外显示实现代码。
## 在MXNet网站上查阅
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册