1 计算环境的构建
“工欲善其事,必先利其器。”
在以下步骤中,当你发现安装非常慢时,可以尝试4G网络,尝试VPN,尝试改变CRAN的镜像源,或尝试改变conda的镜像源。conda镜像源通过修改用户目录下的.condarc
文件使用TUNA镜像源,但该镜像源可能有更新延迟。
1.1 常用链接
准备工作中常用的链接有
1.2 克隆代码
GitHub提供了大量开源代码,这门课的代码主要来自此链接。通常,使用GitHub开源代码最方便的是fork
到自己GitHub账户下,然后clone
到本地。具体而言,需要进行以下操作:
注册GitHub账户。
Fork
此链接到自己账户下的新仓库,可重新命名为如Modern-Actuarial-Models
或其他名称。安装git。在命令窗口使用
$ git config --global user.name "Your Name"
和$ git config --global user.email "youremail@yourdomain.com"
配置git的用户名和邮箱分别为GitHub账户的用户名和邮箱。最后可使用$ git config --list
查看配置信息。(选做)在本地电脑创建ssh public key,并拷贝到GitHub中
Setting
下SSH and GPG keys
。ssh public key一般保存在本人目录下的隐藏文件夹.ssh中,扩展名为.pub。详见链接。设立SSH可以避免后续push
代码到云端时,每次都需要输入密码的麻烦电脑连接手机4G热点。一般地,在手机4G网络下克隆的速度比较快。
在RStudio中创建新的项目,选择Version Control,然后Git,在Repository URL中输入你的GitHub中刚才
fork
的新仓库地址(在Code
下能找到克隆地址,如果第4步完成可以选择SSH地址,如果第4步没完成必须选择HTTPS地址),输入文件夹名称,选择存放位置,点击create project
,RStudio开始克隆GitHub上该仓库的所有内容。此时,你在GitHub上仓库的内容全部克隆到了本地,且放在了一个R Project中。在该Project中,会多两个文件,.Rproj和.gitignore,第一个文件保存了Project的设置,第二文件告诉git在
push
本地文件到GitHub时哪些文件被忽略。如果你修改了本地文件,可以通过R中内嵌的Git上传到GitHub(先
commit
再push
),这样方便在不同电脑上同步文件。git是代码版本控制工具,在push
之前,你可以比较和上个代码版本的差异。GitHub记录了你每次push
的详细信息,且存放在本地文件夹.git中。同时,如果GitHub上代码有变化,你可以pull
到本地。如果经常在不同电脑上使用本仓库,一般需要先pull
成最新版本,然后再编辑修改,最后commit-push
到GitHub。(选做) 你可以建立新的
branch
,使自己的修改和源代码分开。具体操作可参考链接,或者参考账户建立时自动产生的getting-started
仓库。(选做) 你可以尝试Github Desktop或者Jupyter Lab(加载git extension)管理,但对于这门课,这两种方式不是最优。
理论上,GitHub上所有仓库都可以采用以上方法在RStudio中管理,当然,RStudio对于R代码仓库管理最有效,因为我们可以直接在RStudio中运行仓库中的代码。
1.3 R interface to Keras
这里主要说明keras
包的安装和使用。Keras是tensorflow的API,在keras中建立的神经网络模型都由tensorflow训练。安装keras
包主要是安装Python库tensorflow,并让R与之相关联。
1.3.1 R自动安装
最简单的安装方式如下:
使用
install.packages("tensorflow")
安装所有相关的包,然后library("tensorflow")
。install_tensorflow()
这时大概率会出现
No non-system installation of Python could be found. Would you like to download and install Miniconda? Miniconda is an open source environment management system for Python. See https://docs.conda.io/en/latest/miniconda.html for more details. Would you like to install Miniconda? [Y/n]:
虽然你可能已经有Anaconda和Python,但R没有“智能”地识别出来,这时仍建议你选
Y
,让R自己装一下自己能更好识别的Miniconda
, 这个命令还会自动建立一个独立conda环境r-reticulate
,并在其中装好tensorflow, keras
等。上步如果正常运行,结束后会自动重启R。这时你运行
library(tensorflow)
然后tf$constant("Hellow Tensorflow")
,如果没报错,那继续install_packages("keras")
,library("keras")
。用以下代码验证安装成功
model <- keras_model_sequential() %>% layer_flatten(input_shape = c(28, 28)) %>% layer_dense(units = 128, activation = "relu") %>% layer_dropout(0.2) %>% layer_dense(10, activation = "softmax") summary(model)
如果出现以下错误
错误: Installation of TensorFlow not found. Python environments searched for 'tensorflow' package: C:\Users\...\AppData\Local\r-miniconda\envs\r-reticulate\python.exe You can install TensorFlow using the install_tensorflow() function.
这个错误通常是由于
r-reticulate
中tensorflow
和其他包的依赖关系发生错误,或者tensorflow
版本太低,你可以更换镜像源、使用conda/pip install调整该环境中的tensorflow
版本和依赖关系。更好的方式是在conda下安装好指定版本的
tensorflow
然后关联到R,或者用其他方式让R找到其他方式安装的tensorflow
。这时,你先把之前失败的安装C:\Users\...\AppData\Local\r-miniconda
,这个文件夹完全删掉。然后参考以下安装步骤。
1.3.2 使用reticulate关联conda环境
运行
Anaconda Prompt
或者Anaconda Powershell Prompt
,在命令行输入conda create -n r-tensorflow tensorflow=2.1.0
,conda会创建一个独立的r-tensorflow
环境,并在其中安装tensorflow
包。继续在命令行运行
conda activate r-tensorflow
加载刚刚安装的环境,并pip install h5py pyyaml requests Pillow scipy
在该环境下安装keras
依赖的包。至此,R需要的tensorflow环境已经准备好,接下来让R关联此环境。重启R,
library("reticulate")
然后use_condaenv("r-tensorflow",required=T)
,这时R就和上面建立的环境关联好。library("keras“)
。这里假设你已经装好tensorflow
和keras
包。用以下代码验证安装成功
1.3.3 指定conda安装
1.3.4 使用reticulate安装
重启R,
library("reticulate")
。options(timeout=300)
,防止下载时间过长中断。install_miniconda()
,将会安装miniconda
并创建一个r-reticulate
conda环境。此环境为R默认调用的Python环境。(重启R)
library("tensorflow"); install_tensorflow(version="2.1.0")
,将会在r-reticulate
安装tensorflow
。install_packages("keras"); library("keras")
用以下代码验证安装成功
1.4 R interface to Python
R包reticulate
为tensorflow
的依赖包,当你装tensorflow
它也被自动安装。它可以建立R与Python的交互。
1.4.1 reticulate 常见命令
conda_list()
列出已安装的conda环境virtualenv_list()
列出已存在的虚拟环境use_python, use_condaenv, use_virtualenv
可以指定与R关联的python。py_config()
可以查看当前Python关联信息。
很多时候,R会创建一个独立conda环境r-miniconda/envs/r-reticulate
。
1.4.2 切换R关联的conda环境
根据需要,你可以切换R关联的conda环境。具体步骤为
重启R
library("reticulate")
conda_list()
列出可以关联的环境和路径。use_condaenv("env-name")
。env-name
为关联的conda环境。py_config
查看是否关联成功。
1.5 Python
一般在每个Python(Conda)环境都需要安装一个Jupyter Notebook (conda install notebook)。
1.5.1 Conda环境
Python(conda)环境建立比较简单,在使用reticulate关联conda环境
我们已经建立过一个环境r-tensorflow
。具体操作如下:
建立独立环境
conda create -n env-name python=3.8 tensorflow=2.1.0 notebook
。该命令会建立env-name
的环境,并在其中安装python=3.8
,tensorflow
,notebook
包及其依赖包。激活环境
conda activate env-name
.cd 到你的工作目录。
启动jupyter notebook
jupyter notebook
。如遇到缺少的包,在该环境
env-name
下使用conda install ***
安装缺少的包。
1.5.2 常用的Conda命令
conda create -n env-name2 --clone env-name1
:复制环境conda env list
:列出所有环境conda deactivate
:退出当前环境conda remove -n env-name --all
:删除环境env-name
中的所有包conda list -n env-name
: 列出环境env-name
所安装的包conda clean -p
:删除不使用的包conda clean -t
:删除下载的包conda clean -a
:删除所有不必要的包pip freeze > pip_pkg.txt
,pip install -r pip_pkg.txt
保存当前环境PyPI包版本,从文件安装PyPI包(需同系统)conda env export > conda_pkg.yaml
,conda env export --name env_name > conda_pkg.yaml
,conda env create --name env-name2 --file conda_pkg.yaml
保存当前/env-name环境所有包,从文件安装所有包(需同系统)conda list --explicit > spec-list.txt
,conda create --name env-name2 --file spec-list.txt
保存当前环境Conda包下载地址,从文件安装Conda包(需同系统)conda list --export > spec-list.txt
,conda create --name env-name2 --file spec-list.txt
保存当前环境所有包(类似conda env export
),从文件安装所有包(需同系统)
1.5.3 Tensorflow/Pytorch GPU version
Tensorflow
可以综合使用CPU和GPU进行计算,GPU的硬件结构适进行卷积运算,所以适于CNN,RNN等模型的求解。
你可以申请使用校级计算云或者使用学院计算云,它们的服务器都配置了GPU,并装好了可以使用GPU的Tensorflow或者Pytorch。使用校级计算云时,你通常只需要运行Jupyter Notebook就可以使用云端GPU进行计算。使用学院计算云时,你通常需要知道一些常用的Linux命令,你也可以安装Ubuntu来熟悉Linux系统。
校级计算云和学院计算云有专门的IT人员帮你解决如本页所示的大部分IT问题。
你的机器如果有GPU,可以按如下步骤让GPU发挥它的并行计算能力,关键点是让GPU型号、GPU驱动、CUDA版本、Tensorflow或Pytorch版本彼此匹配,且彼此“相连”。百度或者必应上有很多相关资料可以作为参考。
查看电脑GPU和驱动,以及支持的CUDA版本。 或者在终端执行以下命令:nvidia-smi,查看你的NVIDIA显卡驱动支持的CUDA版本。
查看各个Tensorflow版本,Pytorch版本对应的CUDA和cuDNN.
配置CUDA和cuDNN.
安装Tensorflow或者Pytorch.