自然语言处理之路:工具——七种兵器

自然语言处理之路:工具——七种兵器

一个自然语言处理炼丹师的自白

往期:

自然语言处理之路:前提——英文

自然语言处理之路:前提——数学

自然语言处理之路:前提——语言学

欲善其事,必先利其器。这一篇介绍个人在研究中常用的工具,这些可以成倍地提高你的效率,不用为一些细节的东西浪费时间,而专注于自己的想法

首先,假设这样一个场景,我们在一个小实验室。最近,终于用经费买了带GPU的服务器,于是再不用去超算和大家排队抢计算资源了。但是,现在我们得先知道如何使用服务器,来训练我们模型才行,不然也只会对着金山光流口水。

第一步,我们得连接上服务器,并使用那边的终端。

远程登录(SSH)

image

这里我们可以使用基于 SSH 的一些工具来连接服务器。

在 Windows 系统,可以试试常用的 PuTTY。但我个人更推荐目前在用的 Xshell,在一些设置上更加方便。而且虽然这是款商业软件,但我们可以申请研究免费许可。当然,还有种是直接在 Windows 上用 shell 命令行,通过安装 Cygwin

在 Mac 和 Linux 系统,直接打开终端 ssh 过去就好了。

关于将自己文件拷到服务器,可以用 scp 或 rsync 命令。更多 SSH 相关常用的命令,可以查看这篇文章《如何使用SSH》。

这样就连接上了服务器,但又会遇得到新问题:如何使用终端环境。因为此时没有了熟悉的图像界面,只有黑色的窗口和闪灭的命令行,让人手足无措。

Linux 命令行 (Shell)

image

要在这样一个环境下生存下来,那我们就得了解一些“咒语”,即命令行中的各种命令。每个咒语都有着其独特的功用,对于这些咒语,一些基础的初级咒语比如 ls, cd, less 这些,高级的一些比如 awk, sed,掌握的咒语越多你就会越得心应手,效率更高。到那时,反过来还会去 diss 图形界面。顺便 vim 的操作也可以了解下。

最初,我从 Windows 转过来也费了很多劲。先是在东芝实习时,需要研究 Linux 内核,就稍微接触了一些。但之后又不用了,直到最近需要在 GPU 上跑程序,重新捡起来,时间一长,就习惯了。

自己比较喜欢的学习资源,是被称为 TLCL (The Linux Command Line) 的一本很赞的书,有中文翻译版,先快速照着书练习一遍就好了,之后可以回头细细看。

此外相关学习资源很多,搜索一下就有。当 Shell 熟练后,就可以写大杀器,shell 脚本,让自己的工作完全自动化。自动下载数据,自动前处理,自动训练模型,自动分析结果... 那你呢,去玩吧,多亏了它我才能天天到处浪。

于是这样,就可以开始写代码了。

Python

image

人生苦短,大家都用Python。所以我们也用,首先深度学习现在的主流框架,基本都是 Python 写的,而且 Python 好用且易上手,特别在处理数据上面,有各种成熟的模块。

关于 Python 的资源就更数不胜数,这里列出几个我用过的非常棒的学习资源:

  1. Udacity 的 101 Intro to Computer Science:很棒的 CS 入门课程,因为里面用 Python 来写代码,所以上完之后 Python 基础也学差不多了。

  2. 还有 MIT 的 Introduction to Computer Science and Programming Using Python,也是计算机科学与 Python,但比上面讲得更深一些。

  3. 中文资料,我推荐廖雪峰的 Python 教程,和前两个不同。这个主要讲 Python,看看前面部分,网络编程后的不看也行。

会了 Python 之后,此刻你可能撸起袖子准备大干特干了。来!用 Python 从底层实现一个深度学习模型!3秒钟让你从入门到放弃。所以最好还是拿来主义 ,用已有成熟的深度学习框架就好了(值得一提:用 Python 还有 Numpy 从底层实现,其实对理解深度学习非常有帮助)。

深度学习框架 (Framework)

image

跟着 Python 语言,再介绍几个基于 Python 的主流深度学习框架。框架部分我就不说孰好孰坏了,稍微点一下,说说自己用过的:

  1. Pytorch:目前我主要用的框架。特点是代码符合 Python 编码哲学,简洁而且优美,自己定制的空间也比较大,此外 debug 的时候也很方便找。比较适合用于科研,最近越来越火了,首先 fast.ai 已经开始用它来教学,还有把 caffe 也给合并了。

  2. Tensorflow:因为有 Google 这个爹,所以可能是最流行的一个框架吧(我们都是 TF Boys)。因为社区大所以基本上什么代码都能找到,个人认为 TensorFlow 更适合产品开发。

  3. Keras:在 Kaggle 上玩的时候用过,非常傻瓜式,简单好学。

关于更多详细比较,可以查看李飞飞 CS231n 的深度学习框架的PPT

OK,现在就能写出自己的模型,然后在 GPU 上跑了。但对于深度学习任务,除了 GPU 计算资源,还有一个很重要的是数据
》直接进行数据处理,当然厉害的大触们是可以做到的,但对于一般人,我推荐有很好交互性的工具,Jupyter Notebook。

Jupyter Notebook

image

可以把它当成一个网页应用,视觉化地编辑服务器端的一些文件,但主要管理 notebook 文件。 notebook 可以进行实时的交互,很适合测试代码。 而且里面可以混杂 Markdown 语句,代码,图片等等,所以很适合进行分享,以及之后自己阅读。

使用时,先需要在服务器端搭建 Notebook 服务器,然后直接浏览器访问。

关于 Jupyter Notebook 的介绍还有使用方法,网上有很多教程,比如说这个《Jupyter Notebook介绍、安装及使用教程 - 知乎专栏》。最近还发布了相关的 JupyterLab ,也可以了解一下。

数据和模型都搞定了,终于可以跑程序了吧。是的,恭喜你,可以跑动自己第一个程序了。

但跑程序的时候,当前终端窗口就会被占用了,不能干其他事情,比如说跑第二个程序,或进行文件操作。这时你得建立额外的窗口再次连接服务器。每次都这样会特别麻烦,所以就需要一个在服务器端直接进行分屏的小应用。

Tmux (分屏)

Tmux 是个在终端窗口中分屏,运行多个终端会话的工具,同时还能随时断开会话放入后台,或者接入。

学习的话,可以去下一个备忘单,然后边用边查。

常用的几个命令也就创建,分屏,还有切换。

这样对于跑程序相关的就一切都 OK 啦,无论是想跑一个,还是同时跑 n 个,随你喜欢。

但最后还有一点要提,那就是如何管理你的代码

Git & GitHub

首先 Git 必须得会,基本上编程弄个项目都会用到。Git 的好处是,不会因为手贱误删了某些代码而找不回来;或者突然觉得以前写得更好而换不回去;或者发现实践各种想法,结果搞出一大堆自己都分不清的文件。特别,在做实验时,有很多模型想试,这时就建立成多个分支(branch)来执行。

学习资源的话,也有很多这里列两个我用过觉得挺好的:

  1. Pro Git:有这一本基本上就已经够了

  2. 廖雪峰的Git教程:更简洁快速一些,最开始就是用这个入门的

说到 Git 就得提 GitHub,超级神器。主要是用来托管代码的,可以用过 Git 将代码推到 GitHub,之后自己使用或用于共享。GitHub 还有一个很厉害的功能是,找代码。如果你想做任何东西,或者实现论文代码,做之前可以先搜搜 GitHub,总会有你意想不到的收获。

这样基本上整个工作流程用到的工具就都有了,下次再见吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容