土猛的员外

让家里的4090跑起来,用frp搭建自己的大模型测试环境

提示:公众号文章无法直接跳转链接,您可以点击左下角的“阅读原文”,原文是我的blog,那里的链接可以直接点击。

起因

前些天听我邻居介绍了ngrok可以做内网穿透,这样就可以把我家里的那台带了RTX4090的PC用起来。于是我折腾了一通,发现ngrok配置是简单的,但用它自己的server来做转发,网络太慢了,于是就放弃了。

昨晚在Github搜索ngrok的替代品时,发现有人整理了一个非常完整的tunneling工具列表,frp赫然列在第一位。

Image


图1:tunneling工具列表(部分)

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把文件解开,我们可以发现里面的文件如下:

Image


图2:frp目录下的文件
  • frpc:对应的是你家里的电脑;
  • frps:对应的是云服务器,公网上的;
  • xxxx.ini:这是配置文件,你要做的主要配置仅仅在frpc.ini、frps.ini这两个文件里面。

其实解压好之后,安装其实就算完成了,对于存放的目录其实没太多要求。

frp配置

配置可能是这里面最复杂的了,但是总体上也非常简单,只要你照着我下面的步骤做。

【服务器端】

先来看服务端,在我这里就是那台有公网IP的阿里云服务器。

进入到frp的目录,输入以下命令打开frps.ini:

sudo vim frps.ini

在这里,我们以配置ssh为例,你可以先看一下官方文档。

Image


图3:frps的服务端和客户端配置

教程已经非常清楚了,我无需再详细解读,这里我贴一下我的配置,以便大家可以对照看看如何修改。

[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云服务器”-->“防火墙/安全组规则”。


Image

图4:云服务器的出入站规则

结束

OK,我想你应该和我一样可以开心地跑起来了,速度还可以!

如果你有具体的问题,可以邮件咨询我:lxdhzzj#gmail.com

我把ChatGLM2-6B跑起来了,这样我就可以利用大模型的API开始做应用测试了。

Happy!


对了,请不要用于商业!!!我仅仅是用于做测试的。

下面是在外面访问家里电脑上的ChatGLM2-6B API的截图:

Image