ECS部署qq聊天机器人心得体会

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核8GB 1个月
云服务器 ECS,每月免费额度200元 3个月
简介: 本文介绍了使用ECS部署qq聊天机器人的实践经历,也介绍了部署服务器的心得。

[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传文件、多端编程。

image.png

这里的主机名就是大家领取服务器时候的主机,然后端口号就是默认的22就可以。image.png

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群聊天机器人。

启动:

image.png

展示菜单:

image.png

NLP功能

我将自己在学校期间微调的NLP模型在学校服务器上联网并发布了api,然后对接到了自己的ECS服务器上。这个模型是基于GPT-J (6B参量)微调的巨大模型,由于我在微调阶段基于千种prompt让模型学会了包括但不限于翻译、对话、续写等多方面NLU任务,目前的机器人已经能够借助服务器顺利地回复群友发言。


image.png

image.png

外卖推荐功能和食谱查询功能

同时,还借助菜谱接口和基于爬虫的外卖获取方式实现了吃相关的推荐功能。

image.png

image.png

基于html和playwright的天气查询功能

我通过天气接口实现了天气查询,并根据html模板传值生成html文件,通过playwright部署到模拟浏览器中并获取图片文件。

image.png

基于jx3api的各种图文查询功能

同时,由于我玩剑网3,我也为其搭建了各种游戏必须的功能:

查询物价、金价、开服、攻略等。

image.png

image.png

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
JavaScript Java 应用服务中间件
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
|
4天前
|
弹性计算 缓存 监控
云效将项目代码部署到云服务器ECS
云效支持一键和手动部署,一键部署因其高效、一致性和可重复性而受青睐,但也存在灵活性不足和初期设置复杂的挑战。优化方向包括简化脚本、提供选项、完善文档、集成监控和回滚机制。一键部署步骤概括为:准备云效项目和ECS,配置项目和环境,编写部署脚本,设置一键部署,测试脚本,审核发布,监控结果,及后续维护。实际操作应参照云效最新文档。
14 0
|
4天前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
16 1
|
5天前
|
弹性计算 JavaScript 应用服务中间件
在一台ECS服务器上优雅部署多环境:实践攻略
在ECS上部署多环境应用,通过Nginx反向代理实现。规划端口或子域名区分开发、测试和生产环境。配置应用监听不同端口,如Node.js应用修改启动脚本。【6月更文挑战第21天】
125 3
|
8天前
|
安全 Java Linux
从零开始搭建服务器之更加优雅地部署项目(2)
从零开始搭建服务器之更加优雅地部署项目
|
8天前
|
应用服务中间件 Linux nginx
从零开始搭建服务器之更加优雅地部署项目(1)
从零开始搭建服务器之更加优雅地部署项目
|
8天前
|
弹性计算 关系型数据库 MySQL
阿里云ECS如何部署并运行一个JavaWeb项目
阿里云ECS如何部署并运行一个JavaWeb项目
35 0
|
14天前
|
域名解析 弹性计算 监控
使用云效将项目代码部署到云服务器ECS的体验评测
本文详述了使用阿里云云效和ECS搭建企业门户网站的解决方案,包括引导文档、部署流程、一键与手动部署的优缺点以及部署中可能遇到的问题。文中建议阿里云改进文档更新及时性,增强流程指引清晰度,提供更具体的错误信息,并增加实时监控、报警功能及性能优化建议。此外,呼吁建立更多用户交流平台以提升用户体验。
51 1
|
24天前
|
关系型数据库 应用服务中间件 数据库
编程入门(一)【Web服务器环境的部署】
编程入门(一)【Web服务器环境的部署】
42 1
|
25天前
|
Java 关系型数据库 MySQL
【JavaEE进阶】部署Web项目到Linux服务器
【JavaEE进阶】部署Web项目到Linux服务器