Skip to content

Commit 0e3803d

Browse files
authored
Merge pull request #1026 from d2l-ai/master
Pre-release for v2.0.0-beta0
2 parents 62c2723 + 93a8aac commit 0e3803d

File tree

481 files changed

+29821
-72913
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

481 files changed

+29821
-72913
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Build Status](http://ci.d2l.ai/job/d2l-zh/job/master/badge/icon)](http://ci.d2l.ai/job/d2l-zh/job/master/)
44

5-
[第一版:zh.D2L.ai](https://zh.d2l.ai/) | [第二版预览版:zh-v2.D2L.ai](https://zh-v2.d2l.ai) | 安装和使用书中源代码:[第一版](https://zh.d2l.ai/chapter_prerequisite/install.html) [第二版](https://zh-v2.d2l.ai/chapter_installation/index.html) | 当前版本: v2.0.0-alpha1
5+
[第一版:zh-v1.D2L.ai](https://zh-v1.d2l.ai/) | [第二版预览版:zh-v2.D2L.ai](https://zh-v2.d2l.ai) | 安装和使用书中源代码:[第一版](https://zh-v1.d2l.ai/chapter_prerequisite/install.html) [第二版](https://zh-v2.d2l.ai/chapter_installation/index.html) | 当前版本: v2.0.0-alpha2
66

77
<h5 align="center"><i>理解深度学习的最佳方法是学以致用。</i></h5>
88

@@ -42,7 +42,7 @@
4242

4343
虽然纸质书第一版已经出版,但深度学习领域依然在迅速发展。为了得到来自更广泛的英文开源社区的帮助,从而提升本书质量,本书的第二版正在用英文写。英文版正不断被搬回中文版中。
4444

45-
目前,英文版已超过160节(中文版共96节),例如增加了理论背景(如优化收敛分析)、硬件设计(如参数服务器)、全新篇章(如注意力机制、推荐系统、深度学习的数学、生成对抗网络)、应用种类(如自然语言推理)、模型种类(如Transformer、BERT)等,并优化重组了大量章节(如将自然语言处理篇章按从预训练表征、到模型设计、再到下游应用重构)。
45+
目前,英文版已超过160节(中文版共96节),例如增加了理论背景(如优化收敛分析)、硬件设计(如参数服务器)、全新篇章(如注意力机制、推荐系统、深度学习的数学、生成对抗网络)、应用种类(如自然语言推断)、模型种类(如Transformer、BERT)等,并优化重组了大量章节(如将自然语言处理篇章按从预训练表征、到模型设计、再到下游应用重构)。
4646

4747
欢迎关注本书[第二版的英文开源项目](https://github.com/d2l-ai/d2l-en)
4848

@@ -82,4 +82,4 @@
8282

8383
感谢[社区贡献者们](https://github.com/d2l-ai/d2l-zh/graphs/contributors)为每一位读者改进这本开源书。
8484

85-
[如何贡献](https://zh.d2l.ai/chapter_appendix/how-to-contribute.html) | [致谢](https://zh.d2l.ai/chapter_preface/preface.html#致谢) | [讨论或报告问题](https://discuss.gluon.ai) | [其他](INFO.md)
85+
[如何贡献](https://zh-v2.d2l.ai/chapter_appendix-tools-for-deep-learning/contributing.html) | [致谢](https://zh-v2.d2l.ai/chapter_preface/index.html) | [讨论或报告问题](https://discuss.d2l.ai/c/chinese-version/16) | [其他](INFO.md)

TERMINOLOGY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
广播,broadcast
8686

87-
归一化,normalization
87+
规范化,normalization
8888

8989
过拟合,overfitting
9090

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
# 使用Amazon EC2实例
2+
:label:`sec_aws`
3+
4+
在本节中,我们将向你展示如何在原始Linux机器上安装所有库。回想一下,在 :numref:`sec_sagemaker`中,我们讨论了如何使用Amazon SageMaker,而在云上自己构建实例的成本更低。本演示包括三个步骤:
5+
6+
1. 从AWS EC2请求GPU Linux实例。
7+
1. 安装CUDA(或使用预装CUDA的Amazon机器映像)。
8+
1. 安装深度学习框架和其他库以运行本书的代码。
9+
10+
此过程也适用于其他实例(和其他云),尽管需要一些细微的修改。在继续操作之前,你需要创建一个aws帐户,有关更多详细信息,请参阅 :numref:`sec_sagemaker`
11+
12+
## 创建和运行EC2实例
13+
14+
登录到你的aws账户后,单击“EC2”(在 :numref:`fig_aws`中用红色方框标记)进入EC2面板。
15+
16+
![打开EC2控制台](../img/aws.png)
17+
:width:`400px`
18+
:label:`fig_aws`
19+
20+
:numref:`fig_ec2`显示EC2面板,敏感帐户信息变为灰色。
21+
22+
![EC2面板](../img/ec2.png)
23+
:width:`700px`
24+
:label:`fig_ec2`
25+
26+
### 预置位置
27+
选择附近的数据中心以降低延迟,例如“Oregon”(俄勒冈)( :numref:`fig_ec2`右上角的红色方框)。如果你位于中国,你可以选择附近的亚太地区,例如首尔或东京。请注意,某些数据中心可能没有GPU实例。
28+
29+
### 增加限制
30+
31+
在选择实例之前,请点击 :numref:`fig_ec2`所示左侧栏中的“Limits”(限制)标签查看是否有数量限制。 :numref:`fig_limits`显示了此类限制的一个例子。账号目前无法按地域打开p2.xlarge实例。如果你需要打开一个或多个实例,请点击“Request limit increase”(请求增加限制)链接,申请更高的实例配额。一般来说,需要一个工作日的时间来处理申请。
32+
33+
![实例数量限制](../img/limits.png)
34+
:width:`700px`
35+
:label:`fig_limits`
36+
37+
### 启动实例
38+
39+
接下来,单击 :numref:`fig_ec2`中红框标记的“Launch Instance”(启动实例)按钮,启动你的实例。
40+
41+
我们首先选择一个合适的Amazon机器映像(Amazon Machine Image,AMI)。在搜索框中输入“ubuntu”( :numref:`fig_ubuntu`中的红色框标记)。
42+
43+
![选择一个AMI](../img/ubuntu-new.png)
44+
:width:`700px`
45+
:label:`fig_ubuntu`
46+
47+
EC2提供了许多不同的实例配置可供选择。对于初学者来说,这有时会让人感到困惑。 :numref:`tab_ec2`列出了不同合适的计算机。
48+
49+
:不同的EC2实例类型
50+
51+
| Name | GPU | Notes |
52+
|------|-------------|-------------------------------|
53+
| g2 | Grid K520 | 过时的 |
54+
| p2 | Kepler K80 | 旧的GPU但Spot实例通常很便宜 |
55+
| g3 | Maxwell M60 | 好的平衡 |
56+
| p3 | Volta V100 | FP16的高性能 |
57+
| g4 | Turing T4 | FP16/INT8推理优化 |
58+
:label:`tab_ec2`
59+
60+
所有这些服务器都有多种类型,显示了使用的GPU数量。例如,p2.xlarge有1个GPU,而p2.16xlarge有16个GPU和更多内存。有关更多详细信息,请参阅[Amazon EC2 文档](https://aws.amazon.com/ec2/instance-types/)
61+
62+
![选择一个实例](../img/p2x.png)
63+
:width:`700px`
64+
:label:`fig_p2x`
65+
66+
注意,你应该使用支持GPU的实例以及合适的驱动程序和支持GPU的深度学习框架。否则,你将感受不到使用GPU的任何好处。
67+
68+
到目前为止,我们已经完成了启动EC2实例的七个步骤中的前两个步骤,如 :numref:`fig_disk`顶部所示。在本例中,我们保留“3. Configure Instance”(3. 配置实例)、“5. Add Tags”(5. 添加标签)和“6. Configure Security Group”(6. 配置安全组)步骤的默认配置。点击“4.添加存储”并将默认硬盘大小增加到64GB( :numref:`fig_disk`中的红色框标记)。请注意,CUDA本身已经占用了4GB空间。
69+
70+
![修改硬盘大小](../img/disk.png)
71+
:width:`700px`
72+
:label:`fig_disk`
73+
74+
最后,进入“7. Review”(7. 查看),点击“Launch”(启动),即可启动配置好的实例。系统现在将提示你选择用于访问实例的密钥对。如果你没有密钥对,请在 :numref:`fig_keypair`的第一个下拉菜单中选择“Create a new key pair”(新建密钥对),即可生成密钥对。之后,你可以在此菜单中选择“Choose an existing key pair”(选择现有密钥对),然后选择之前生成的密钥对。单击“Launch Instances”(启动实例)即可启动创建的实例。
75+
76+
![选择一个密钥对](../img/keypair.png)
77+
:width:`500px`
78+
:label:`fig_keypair`
79+
80+
如果生成了新密钥对,请确保下载密钥对并将其存储在安全位置。这是你通过SSH连接到服务器的唯一方式。单击 :numref:`fig_launching`中显示的实例ID可查看该实例的状态。
81+
82+
![单击实例ID](../img/launching.png)
83+
:width:`700px`
84+
:label:`fig_launching`
85+
86+
### 连接到实例
87+
88+
如 :numref:`fig_connect`所示,实例状态变为绿色后,右键单击实例,选择`Connect`(连接)查看实例访问方式。
89+
90+
![查看实例访问方法](../img/connect.png)
91+
:width:`700px`
92+
:label:`fig_connect`
93+
94+
如果这是一个新密钥,它必须是不可公开查看的,SSH才能工作。转到存储`D2L_key.pem`的文件夹,并执行以下命令以使密钥不可公开查看:
95+
96+
```bash
97+
chmod 400 D2L_key.pem
98+
```
99+
100+
![查看实例访问和启动方法](../img/chmod.png)
101+
:width:`400px`
102+
:label:`fig_chmod`
103+
104+
现在,复制 :numref:`fig_chmod`下方红色框中的ssh命令并粘贴到命令行:
105+
106+
```bash
107+
ssh -i "D2L_key.pem" [email protected]
108+
```
109+
110+
当命令行提示“Are you sure you want to continue connecting (yes/no)”(“你确定要继续连接吗?(是/否)”)时,输入“yes”并按回车键登录实例。
111+
112+
你的服务器现在已就绪。
113+
114+
## 安装CUDA
115+
116+
在安装CUDA之前,请确保使用最新的驱动程序更新实例。
117+
118+
```bash
119+
sudo apt-get update && sudo apt-get install -y build-essential git libgfortran3
120+
```
121+
122+
我们在这里下载CUDA 10.1。访问NVIDIA的[官方存储库](https://developer.nvidia.com/cuda-toolkit-archive) 以找到下载链接,如 :numref:`fig_cuda`中所示。
123+
124+
![查找CUDA 10.1下载地址](../img/cuda101.png)
125+
:width:`500px`
126+
:label:`fig_cuda`
127+
128+
将说明复制粘贴到终端上,以安装CUDA 10.1。
129+
130+
```bash
131+
# 链接和文件名可能会发生更改,以NVIDIA的官方为准
132+
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
133+
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
134+
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
135+
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
136+
sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
137+
sudo apt-get update
138+
sudo apt-get -y install cuda
139+
```
140+
141+
安装程序后,运行以下命令查看GPU:
142+
143+
```bash
144+
nvidia-smi
145+
```
146+
147+
最后,将CUDA添加到库路径以帮助其他库找到它。
148+
149+
```bash
150+
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda/lib64" >> ~/.bashrc
151+
```
152+
153+
## 安装库以运行代码
154+
155+
要运行本书的代码,只需在EC2实例上为linux用户执行 :ref:`chap_installation`中的步骤,并使用以下提示在远程linux服务器上工作:
156+
157+
* 要在Miniconda安装页面下载bash脚本,请右击下载链接并选择“copy Link address”,然后执行`wget [copied link address]`
158+
* 运行`~/miniconda3/bin/conda init`, 你可能需要执行`source~/.bashrc`,而不是关闭并重新打开当前shell。
159+
160+
## 远程运行Jupyter笔记本
161+
162+
要远程运行Jupyter笔记本,你需要使用SSH端口转发。毕竟,云中的服务器没有显示器或键盘。为此,请从你的台式机(或笔记本电脑)登录到你的服务器,如下所示:
163+
164+
```
165+
# 此命令必须在本地命令行中运行
166+
ssh -i "/path/to/key.pem" [email protected] -L 8889:localhost:8888
167+
```
168+
169+
接下来,转到EC2实例上本书下载的代码所在的位置,然后运行:
170+
171+
```
172+
conda activate d2l
173+
jupyter notebook
174+
```
175+
176+
:numref:`fig_jupyter`显示了运行Jupyter笔记本后可能的输出。最后一行是端口8888的URL。
177+
178+
![运行Jupyter Notebook后的输出(最后一行是端口8888的URL)](../img/jupyter.png)
179+
:width:`700px`
180+
:label:`fig_jupyter`
181+
182+
由于你使用端口转发到端口8889,请复制 :numref:`fig_jupyter`红色框中的最后一行,将URL中的“8888”替换为“8889”,然后在本地浏览器中打开它。
183+
184+
## 关闭未使用的实例
185+
186+
由于云服务是按使用时间计费的,你应该关闭不使用的实例。请注意,还有其他选择:
187+
188+
* “Stopping”(停止)实例意味着你可以重新启动它。这类似于关闭常规服务器的电源。但是,停止的实例仍将按保留的硬盘空间收取少量费用。
189+
* “Terminating”(终止)实例将删除与其关联的所有数据。这包括磁盘,因此你不能再次启动它。只有在你知道将来不需要它的情况下才这样做。
190+
191+
如果你想要将该实例用作更多实例的模板,请右击 :numref:`fig_connect`中的例子,然后选择“Image”$\rightarrow$“Create”以创建该实例的镜像。完成后,选择“实例状态”$\rightarrow$“终止”以终止实例。下次要使用此实例时,可以按照本节中的步骤基于保存的镜像创建实例。唯一的区别是,在 :numref:`fig_ubuntu`所示的“1.选择AMI”中,你必须使用左侧的“我的AMI”选项来选择你保存的镜像。创建的实例将保留镜像硬盘上存储的信息。例如,你不必重新安装CUDA和其他运行时环境。
192+
193+
## 小结
194+
195+
* 我们可以按需启动和停止实例,而不必购买和制造我们自己的计算机。
196+
* 在使用支持GPU的深度学习框架之前,我们需要安装CUDA。
197+
* 我们可以使用端口转发在远程服务器上运行Jupyter笔记本。
198+
199+
## 练习
200+
201+
1. 云提供了便利,但价格并不便宜。了解如何启动[spot实例](https://aws.amazon.com/ec2/spot/)以降低成本。
202+
1. 尝试使用不同的GPU服务器。它们有多快?
203+
1. 尝试使用多GPU服务器。你能把事情扩大到什么程度?
204+
205+
[Discussions](https://discuss.d2l.ai/t/423)

0 commit comments

Comments
 (0)