让家里的4090跑起来,用frp搭建自己的大模型测试环境
提示:公众号文章无法直接跳转链接,您可以点击左下角的“阅读原文”,原文是我的blog,那里的链接可以直接点击。
起因
前些天听我邻居介绍了ngrok可以做内网穿透,这样就可以把我家里的那台带了RTX4090的PC用起来。于是我折腾了一通,发现ngrok配置是简单的,但用它自己的server来做转发,网络太慢了,于是就放弃了。
昨晚在Github搜索ngrok的替代品时,发现有人整理了一个非常完整的tunneling工具列表,frp赫然列在第一位。
frp的优势
相比于ngrok,frp更符合我的需求。frp的一些特性优势:
自定义服务端:可以使用自己的云服务器做服务端,速度有保障(确实很快); 类型支持丰富:包括http/https/ssh/ssh2/dns/socket/ftp/xtcp等类型; 文档出色:有中文文档,如果你有高级需求,那文档还是很重要的。
也许ngrok也有这些功能,但我没有耐心继续找下去了,frp更符合我。
frp安装
frp安装其实比较简单。
在介绍安装之前,先介绍一下我的PC配置,你们可以按自己的情况下载和安装:
本地服务器:i7/RTX4090/32G/2TB,Ubuntu Server 22.04.3 LTS,对应的就是你自己家里的电脑; 云服务器:阿里云,轻应用服务器(612元/年,买了一年多了),CentOS,3M带宽。
因为都是linux系统,所以我下载的是frp_0.51.3_linux_amd64.tar.gz,大家可以在这里下载。
提示:公众号文章无法直接跳转链接,您可以点击左下角的“阅读原文”,原文是我的blog,那里的链接可以直接点击。
我们可以把这个文件分别传到本地服务器和云服务器,然后用tar -xvf frp_0.51.3_linux_amd64.tar.gz把文件解开,我们可以发现里面的文件如下:
frpc:对应的是你家里的电脑; frps:对应的是云服务器,公网上的; xxxx.ini:这是配置文件,你要做的主要配置仅仅在 frpc.ini、frps.ini这两个文件里面。
其实解压好之后,安装其实就算完成了,对于存放的目录其实没太多要求。
frp配置
配置可能是这里面最复杂的了,但是总体上也非常简单,只要你照着我下面的步骤做。
【服务器端】
先来看服务端,在我这里就是那台有公网IP的阿里云服务器。
进入到frp的目录,输入以下命令打开frps.ini:
sudo vim frps.ini
在这里,我们以配置ssh为例,你可以先看一下官方文档。
教程已经非常清楚了,我无需再详细解读,这里我贴一下我的配置,以便大家可以对照看看如何修改。
[common]
bind_port = 7000
vhost_http_port = 8080
这里如果大家只是配置ssh的话,只需要上面的bind_port = 7000,注意=两边的空格。下面的vhost_http_port是为了放开家里服务器的web服务的。
然后用命令:
sudo ./frps -c ./frps.ini
启动服务端的服务。
注意:一般是先启动服务端(也就是公网上的),再启动本地的。
【注册成系统服务】
目前的命令在我们的终端关闭之后就会结束,所以如果你要持续运行,可以将它注册成系统服务。官方也提供了很详细的文档,使用systemd,很简单,在服务端和本地端都可以用,我就不再赘述了。
【本地配置】
好,接下来我们来配置本地这一端,也就是你家里的PC。
本地端的配置是在你自己的电脑上(怕大家弄错了,多啰嗦一下),修改的是frpc.ini,对,结尾是c,不是s。
官方的配置说明已经在图3展示了,你也可以直接进入官方文档进行查看。
我贴一下我的frpc.ini配置:
[common]
server_addr = 121.xxx.xx.175
server_port = 7000[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web]
type = http
local_port = 80
custom_domains = www.luxxxxxxxxxxxxxong.com
我不仅仅是ssh,还配置了一个web。
隐去一些具体信息。
然后,启动你的本地PC上的服务:
sudo ./frpc -c ./frpc.ini
好了,你试试看。在其他电脑上用下面的命令试试ssh:
ssh -oPort=6000 [email protected]
x.x.x.x是你的公网服务器IP地址。
【无法访问的原因】
如果你的测试过程有问题,那一多半的可能是你的云服务器对外端口未开放。你配置里面涉及的端口,如6000/7000/8080,都需要在阿里云服务器上开通。
一般在“控制台”-->“轻量应用服务器/ECS云服务器”-->“防火墙/安全组规则”。
结束
OK,我想你应该和我一样可以开心地跑起来了,速度还可以!
如果你有具体的问题,可以邮件咨询我:lxdhzzj#gmail.com
我把ChatGLM2-6B跑起来了,这样我就可以利用大模型的API开始做应用测试了。
Happy!
对了,请不要用于商业!!!我仅仅是用于做测试的。
下面是在外面访问家里电脑上的ChatGLM2-6B API的截图: