Transcript
00:00:00我们的本地模型设置运行良好,直到我们需要更换模型。
00:00:04现在我们要杀掉 llama 服务,更改端口,更新 OpenAI 基础 URL,等待
00:00:10重新加载,并祈祷一切正常。
00:00:13这一切都是因为我们的编程模型太大,不适合快速聊天,而你的小模型又太笨
00:00:18无法处理真正的代码。
00:00:19LlamaSwap 解决了这个问题。
00:00:21一个端点,多个模型,自动切换,而且你的工具甚至不知道发生了变化。
00:00:26接下来的几分钟里,我将向你展示如何设置。
00:00:34大多数本地 LLM 开发者最终都会遇到同样的瓶颈。
00:00:37起初,你会使用一些方便的工具,如 llama、lmstudio,只要能用的就行。
00:00:44因为它们确实管用。
00:00:45老实说,这很棒,因为它们已经变得好多了。
00:00:48但随后我们开始想要更多的控制权。
00:00:51你想要精确的 llama CPP 标志、GPU 层级放置、上下文大小、自定义后端,甚至
00:00:59实验性模型。
00:01:01所以你转向更原始的 llama 服务,感觉非常棒。
00:01:06直到你意识到你只是用一个问题换了另一个问题。
00:01:09现在你就在做这个。
00:01:11你杀掉 llama 服务,然后启动 QuinCoder,五分钟后,你又在
00:01:16做什么?
00:01:17你又杀掉 llama 服务。
00:01:18你在这些模型之间来回跳转。
00:01:20每次这样做时,都会有东西在等待、重连、失败,或者默默地使用了错误
00:01:26的模型。
00:01:27所以你真正想做的是在前端保持一个端点,在后端随心所欲地切换
00:01:31模型。
00:01:33这就是 llama swap 填补的空白。
00:01:36如果你喜欢能加速工作流程的编程工具,请务必订阅。
00:01:39我们经常会发布新视频。
00:01:41现在,在讨论细节之前,让我展示一下这一切是如何运行的。
00:01:44现在 llama swap 在本地的一个端口上运行。
00:01:48我的客户端只知道这个基础 URL,不需要 Quin 一个 URL,small LM 一个 URL,
00:01:55embeddings 另一个 URL,只有一个入口。
00:01:58这是一个只有两个模型的小型配置。
00:02:02一个是 QuinCoder,另一个是 small LM2。
00:02:06每个模型都有自己的命令。
00:02:09每个模型都有自己的模型文件。
00:02:11每个模型都有自己的上下文大小。
00:02:14这两个模型之间的区别还在于,每个模型也都有自己的 TTL。
00:02:19现在我向编程模型请求一些内容。
00:02:22我发送一个标准的 OpenAI 风格聊天请求。
00:02:25模型字段显示的是 QuinCoder,好的,太棒了。
00:02:30让我们观察日志。
00:02:32它会等待后端健康运行,然后将请求发送过去。
00:02:36现在关键在于:以下操作并未发生。
00:02:39我没有更改 URL。
00:02:41我没有重启 open web UI。
00:02:43我没有在 Cursor 中进行编辑。
00:02:46我只更改了一个字段。
00:02:48模型从 QuinCoder 变成了 small LM2,同样的端点,同样的客户端,不同的模型。
00:02:55当模型空闲时间超过 TTL 时,llama swap 可以卸载它,归还你的 VRAM。
00:02:59这就是全部诀窍。
00:03:00你的工具以为它们在与一个 API 对话。
00:03:02Llama swap 在幕后处理那些混乱的部分,从而真正控制运行状态。
00:03:04好的,太棒了。
00:03:09那么,什么是 llama swap 呢?
00:03:10我刚才已经演示过了,对吧?
00:03:11把它看作是你本地模型的中心。
00:03:12你的应用不直接与每个模型服务器对话。
00:03:13它们与 llama swap 对话。
00:03:16然后 llama swap 查看模型字段并决定该怎么做。
00:03:19如果模型已经运行,它将转发请求。
00:03:21如果模型没有运行,那么它将启动请求。
00:03:25如果需要另一个模型腾出空间,它将停止该模型。
00:03:28然后你的客户端会收到一个正常的响应。
00:03:31因此,无需每 10 分钟更改一次基础 URL。
00:03:35只需要一个二进制文件,一个配置文件,一个稳定的 API 端点。
00:03:38它是用 Go 构建的,使用 YAML 配置。
00:03:41它充当 OpenAI 兼容和 Anthropic 兼容 API 的代理,并且可以
00:03:45置于 llama cpp、vllm、tabby API 等后端的前端。
00:03:48如果你运气好,磁盘上可能有 10 或 20 个模型,但 VRAM 只能让一两个
00:03:53保持加载状态。TTL 对此大有裨益。
00:03:59如果模型空闲时间足够长,llama swap 可以卸载它。
00:04:05这样你的 GPU 就不会被卡在持有不使用的模型上,
00:04:06而是可以为下一个请求释放内存。
00:04:08如果模型闲置时间足够长,llama swap 就会将其卸载。
00:04:11这样你的 GPU 就不会被困在运行那些并未实际使用的模型上,而是
00:04:17在这一点上,显而易见的问题是:为什么不直接使用 llama 或 LM Studios,或者原生 llama
00:04:20服务器?
00:04:23答案是,你确实可以。
00:04:25Llama swap 并非在所有情况下都取代这些工具。
00:04:31它解决的是一个非常具体的问题。
00:04:32与 llama 相比,llama swap 不是模型库、下载器,也不是对初学者友好的 CLI。
00:04:35Llama swap 并不能完全取代这些工具。
00:04:37它解决的是一个非常具体的问题。
00:04:40你可以带上自己的 llama cpp 版本和标志,由你决定每个
00:04:47模型的启动方式。
00:04:49与 LM Studio 相比,llama swap 更侧重于服务器端,无需图形界面。
00:04:50它更适合开发机、家庭实验室服务器、Docker 或需要稳定 API 的
00:04:55共享机器。
00:04:57这不像运行 “llama run llama 3” 那么简单。
00:05:02你需要模型文件。
00:05:07你需要了解你的后端。
00:05:09你需要编写 YAML。
00:05:13你需要知道哪些标志适合你的 GPU。
00:05:15它没有内置的模型库来自动下载和配置。
00:05:17所以,老实说,设置过程非常繁琐。
00:05:19但对某些开发者来说,它解决了一个非常具体的痛点。
00:05:22那就是:确切知道想要哪个模型,却浪费时间在各种配置和
00:05:26重新连接上。
00:05:29如果你使用 Cursor、Continue、自定义代理或本地脚本,它值得一试。
00:05:32它会很有用,但设置起来会更费力一些。
00:05:38这就是 llama swap。
00:05:39一个稳定的 API 端点,后端有多个本地模型,自动切换,空闲卸载,
00:05:44完全的后端控制。
00:05:47核心理念很简单。
00:05:49你的客户端不再需要关心实际运行的是哪个模型服务器。
00:05:54Llama swap 会为它们处理好一切。
00:05:56如果你喜欢这类编程工具,请务必订阅。
00:05:58你的客户端不再需要关心具体是哪个模型服务器在运行。
00:06:02Llama swap 会为它们处理这一切。
00:06:04如果你喜欢编写这类代码工具,请务必订阅。
00:06:06我们下个视频再见。