[toc]
自我介绍
我是中国地质大学(武汉)计算机学院研二的一名学生,在实习时候通过同事推荐知道了这个平台和“飞天加速计划·高校学生在家实践”活动。
在公司实习时候接触了很多linux的操作,然后突然想在qq群部署一个封装了游戏查询和日常生活相关查询功能的聊天机器人,但是机器人要在后台24h运行,总不可能用自己的电脑,于是就想到了使用云服务器。
自己其实在本科时期使用过阿里云搭建自己的个人博客、云盘、和毕设的一些相关服务,但是后来到期了,就再没接触了。现在了解到有阿里云的这个计划,就来试一试了,这次的资源比上次好很多,核、流量都比本科时期的最便宜服务器大了不少。
阿里云ECS使用攻略
服务器系统选择
在公司时候我使用的是Ubuntu 20.x版本,但是在服务器上我突然想选 最新的22.x版本。但是经历了一系列不兼容和报错之后,我还是决定使用稳定的20.x版本。所以推荐大家使用这个版本,这里的apt-get的镜像也很全,基本不需要自己调整。
服务器部署
作为一个Python Programmer,拿到服务器第一件事肯定是部署Anaconda,那么只需在官网下载最新版本的x86 linux.sh版本即可。
bash Anaconda3-2022.05-Linux-x86_64.sh
值得注意的是运行完安装脚本之后一定要配置环境变量。
vim ~/.bashrc # 添加 export PATH=/root/anaconda3/bin:$PATHsource ~/.bashrc
我的项目比较特殊,是一个py 3.10的新项目,所以自然而然配置了3.10环境:
conda create -n bot python=3.10 conda activate bot
然后就直接从我的github链接里克隆了,这是一个使用和cqhttp捕获q群聊天内容,再通过nonebot2实现机器人部署,依赖playwright库展示html模板,再将文本内容以网页图片的形式展示。与此同时,由于自己也是一个小炼丹er,我把目前正热的NLLB和BLOOM模型结合自己基于GPT系列微调后的模型部署成了服务,然后通过网络接口传输给了机器人,这样一来,群友就可以和机器人快乐说话啦!
服务器使用TIPS
本地访问服务器
为了更好地debug,我在本地上安装了Tabby:
然后通过ssh链接就能很好地访问服务器、使用FTP传文件、多端编程。
这里的主机名就是大家领取服务器时候的主机,然后端口号就是默认的22就可以。
vim使用
在服务器上进行debug,肯定离不开vim工具。
vim工具的使用网上很多资料,我比较常用的是:
- 进入到功能操作前一定要先ESC退出文本编辑模式
- :是命令开始的标记,可以接具体命令,比如:wq是保存退出,:q是退出,:q!是强制退出
- 同时还有一些基本的操作,比如gg是回到开头,dd是删除整行,v是逐字选中,V是逐行选中,然后结合home 和 end,y复制,p粘贴,就能在服务器上实现基本的文本编辑功能。
debug tips
在ECS上debug其实略有困难,一般来说使用python的pdb:
python -m pdb *.py
然后通过pdb的一堆指令来调试,或者直接在代码里:
importpdbpdb.set_trace()
但是这样太麻烦,所以我一般使用print()来打印内存。
此外,当项目一大,代码一多,设置tab来保证缩进一直,用vim还比较麻烦。所以我选择通过频繁的git pull git push来实现本地机器上编辑文档,然后在服务器上运行。
后台运行文件
这个也算是linux的最基本操作,一般格式是:
nohup [the command you run] > [the log name] &
就可以后台运行文件,这样即使关掉了tabby页面也能继续运行。
而查看自己的文件状态,只需要通过下面命令即可:
tail -f [the log name]
debug心得
在使用服务器时,的确经历了不少bug。
- apt-get安装某个工具失败:apt-get update或者apt-get upgrade解决
- pip 失败:更换镜像源解决。
- ssh链接不上服务器:检查用户名和密码,检查端口,检查防火墙
- wget失败:检查是不是因为ssl规则拒绝,取消https为http
- wget断点续存:wget -c,wget -b
- ……
总结
目前我还是在实习阶段,为来不管是继续读博还是直接工作,只要还在互联网行业,不管是现在的算法岗还是未来的其他各种互联网岗位,都肯定离不开服务器的使用,离不开linux系统的使用。目前使用ECS的10天里,感觉到了服务器带来的各种方便。等以后经济条件和时间条件更加富裕,我会考虑更大的服务器,重新部署个人云盘、博客、搭建更有趣的联网服务:比如公开自己的NLP的API,写线上测试界面,比如装载一些小游戏等。如果有可能,我还想拥有一台自己的深度学习服务器。现在用公司的服务器真的太爽了,但我肯定不好用它部署自己的服务,等以后有了自己的,就没人和我抢gpu等计算资源和存储资源了!
经过这么多天的学习,每次使用ECS遇到不懂的问题和bug都会查询很多资料,现在已经能够熟练在ECS各种操作了,这为我的学习和科研都有了很多帮助。希望之后有机会实现自己的展望!
个人作品
我基于ECS搭建了一个qq群聊天机器人。
启动:
展示菜单:
NLP功能
我将自己在学校期间微调的NLP模型在学校服务器上联网并发布了api,然后对接到了自己的ECS服务器上。这个模型是基于GPT-J (6B参量)微调的巨大模型,由于我在微调阶段基于千种prompt让模型学会了包括但不限于翻译、对话、续写等多方面NLU任务,目前的机器人已经能够借助服务器顺利地回复群友发言。
外卖推荐功能和食谱查询功能
同时,还借助菜谱接口和基于爬虫的外卖获取方式实现了吃相关的推荐功能。
基于html和playwright的天气查询功能
我通过天气接口实现了天气查询,并根据html模板传值生成html文件,通过playwright部署到模拟浏览器中并获取图片文件。
基于jx3api的各种图文查询功能
同时,由于我玩剑网3,我也为其搭建了各种游戏必须的功能:
查询物价、金价、开服、攻略等。