无需昂贵GPU:本地部署开源AI项目LocalAI你在消费级硬件上运行大模型

## 前言

本文主要介绍如何在本地服务器部署无需依托高昂价格的 GPU,也可以在本地运行离线 AI 项目的开源 AI 神器 LoaclAI,并结合 cpolar 内网穿透轻松实现远程使用的超详细教程。

随着 AI 大模型的发展,各大厂商都推出了自己的线上 AI 服务,比如写文章的、文字生成图片或者视频的等等。但是使用这些 AI 软件时,都需要将文件数据传输到商家的服务器上,所以不少用户就会存在这样的担忧:我的数据会泄露吗?我的隐私能得到保护吗?

今天就和大家分享一款可以本地部署的开源 AI 项目,它就是在 github 上已经获得了 27.7Kstar 的明星项目 LocalAI!它可以在本地直接运行大语言模型 LLM、生成图像、音频等。关键是不需要高端昂贵的 GPU,是的,直接在消费级硬件上通过 CPU 就能推理运行,真正降低了 AI 使用的门槛。

LocalAI 的安装方式也非常简单,支持通过 Shell 脚本或 Docker 容器来本地部署。本例中,将通过 docker 来演示如何快速启动 LocalAI 并进行大模型加载与跨网络环境远程使用。

image-20250107161115378

1. Docker 部署

本例使用 Ubuntu 22.04 进行演示,使用 Docker 进行部署,如果没有安装 Docker,可以查看这篇教程进行安装:《Docker 安装教程——Linux、Windows、MacOS》

安装好 Docker 后,打开终端执行这行命令启动容器即可:

shell sudo docker run -ti --name local-ai -p 8080:8080 localai/localai:latest-cpu

这里使用的镜像是仅使用 CPU 来运行的镜像,如果大家有 Nvidia 显卡的好 GPU,也可以使用下方命令拉取支持 N 卡的镜像来运行容器:

shell sudo docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-12

更多项目配置与使用详情大家也可以访问作者的 github 主页进行查看:https://github.com/mudler/LocalAI

2. 简单使用演示

容器启动后,我们在 Ubuntu 中使用浏览器访问 http://localhost:8080 即可打开 LocalAI 的 Web UI 页面:

image-20250107150311522

能看到页面中央提示我们现在还没有添加大模型,我们可以点击 Gallery,在跳转页面选择一个大模型:

image-20250107151137003

可以看到在这个界面中有 600 多个大模型,并且可以根据用途标签(文字转语音、图片生成、文章生成等等)进行筛选或者在下方输入框搜索指定的模型:

1736234546248

我这里以添加 llama-3.2-1b 模型来进行演示:点击 install 按钮安装等待完成即可

image-20250107151337786

image-20250107151539442

image-20250107151705300

安装完成后,点击页面上方导航条中的 HOME 回到主页即可发现刚刚添加的 llama-3.2 模型:

image-20250107153151174

想要使用这个 AI 大模型,点击上方导航中的 chat 即可与它聊天了:

image-20250107153311605

点击右侧的模型选择,下拉框中会显示你已经安装的大模型:

image-20250107153543150

目前我只安装了这一个,如果想继续安装其他大模型,可以点击页面上方导航栏中的 Models 进行选择:(跳转的就是首次挑选模型安装的那个页面)

image-20250107153714760

3. 安装 cpolar 内网穿透

不过我们目前只能在本地局域网内访问刚刚部署的 LocalAI 来使用 AI 大模型聊天,如果想不在同一局域网内时,也能在外部网络环境使用手机、平板、电脑等设备远程访问与使用它,应该怎么办呢?我们可以使用 cpolar 内网穿透工具来实现远程访问的需求。无需公网 IP,也不用设置路由器那么麻烦。

下面是安装 cpolar 步骤:

Cpolar 官网地址: https://www.cpolar.com

使用一键脚本安装命令:

shell sudo curl https://get.cpolar.sh | sh

img

安装完成后,执行下方命令查看 cpolar 服务状态:(如图所示即为正常启动)

shell sudo systemctl status cpolar

img

Cpolar 安装和成功启动服务后,在浏览器上输入 ubuntu 主机 IP 加 9200 端口即:【http://localhost:9200】访问 Cpolar 管理界面,使用 Cpolar 官网注册的账号登录,登录后即可看到 cpolar web 配置界面,接下来在 web 界面配置即可:

image-20240801133735424

4. 配置公网地址

登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: localai ,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8080
  • 域名类型:随机域名
  • 地区:选择 China Top

点击创建:

image-20250107155748353

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在浏览器中访问即可。

image-20250107160010472

如图所示,现在就已经成功实现使用公网地址异地远程访问本地部署的 LocalAI 来用 AI 大模型聊天啦!

image-20250107160149458

小结

为了方便演示,我们在上边的操作过程中使用 cpolar 生成的 HTTP 公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。

如果有长期使用 LocalAI,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置公网地址。

5. 配置固定公网地址

由于以上使用 cpolar 所创建的隧道使用的是随机公网地址,24 小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择 china top,然后设置一个二级子域名名称,我这里演示使用的是mylocal,大家可以自定义。填写备注信息,点击保留。

image-20250107160432921

保留成功后复制保留的二级子域名地址:

image-20250107160503136

登录 cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道localai,点击右侧的编辑

image-20250107160552136

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20250107160647570

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20250107160726385

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的 LocalAI Web UI 页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20250107160928361

以上就是如何在本地 Ubuntu 系统使用 Docker 快速部署开源 AI 服务 LocalAI,并安装 cpolar 内网穿透工具配置固定不变的二级子域名公网地址,实现随时随地远程在线与 AI 大模型交互的全部流程,感谢您的观看,有任何问题欢迎留言交流。

<think>嗯,用户想在本地部署一个开源模型进行角色扮演的对话。首先,我需要明确用户的需求。角色扮演对话可能需要模型能够根据上下文生成连贯的回复,并且可能需要一定的角色设定。用户可能没有太多经验,所以步骤要详细。 首先,用户需要选择合适的模型。现在开源的大语言模型有很多,比如LLaMA、Alpaca、Vicuna或者ChatGLM。这些模型有不同的版本和规模,比如7B、13B等。考虑到本地部署硬件资源可能有限,所以得推荐适合的模型大小。比如,7B的模型在消费GPU上可能跑得起来,但更大的可能需要更好的硬件。 接下来是环境准备。用户需要安装Python、PyTorch或者TensorFlow之类的框架。可能需要用到CUDA来加速,所以得检查用户的显卡是否支持。如果用户没有GPU,可能需要用CPU,但速度会慢很多。这里可能需要提醒用户注意硬件配置。 然后是模型下载。Hugging Face Hub有很多开源模型,用户需要下载对应的模型文件和配置文件。可能需要用git lfs来下载大文件,或者直接下载压缩包。同时,要注意模型的许可证,确保符合使用规定。 接下来是依赖安装。大多数模型需要transformers库,可能还需要其他依赖,比如accelerate、bitsandbytes用于量化,或者peft用于微调。需要列出必要的pip安装命令,方便用户安装。 部署模型部分,可能需要写一个脚本加载模型和分词器。使用pipeline可以简化生成过程。用户可能需要调整参数,比如max_length、temperature等来控制生成效果。这里要给出示例代码,并解释关键参数的作用。 角色扮演的实现可能需要设置系统提示词,比如告诉模型“你是一个中世纪骑士”之类的。同时,要维护对话历史,把之前的对话内容作为上下文输入。可能需要用列表保存历史,并每次将历史拼接起来输入模型。 性能优化方面,如果用户显存不够,可以建议使用量化技术,比如8-bit或4-bit加载模型。或者使用模型并行、减少batch size。对于CPU用户,可能需要建议使用更小的模型或者优化代码。 进阶功能方面,微调模型可能需要用户准备数据集,用LoRA等方法进行微调。这可能需要更多的时间和资源,但能提升角色扮演的效果。另外,可以集成到聊天界面,比如用Gradio做一个简单的Web界面,方便交互。 最后,注意事项要提到硬件要求,模型选择的重要性,还有响应时间的预估。比如大模型需要更多显存,实时交互可能需要较快的硬件。 可能需要考虑用户的实际操作中遇到的问题,比如依赖冲突、版本不匹配,或者模型文件损坏。需要提醒用户按照文档步骤操作,遇到问题检查错误信息,查阅社区资源。 总之,步骤大概分为选模型、装环境、下模型、写代码、调参数、维护上下文,优化性能,可能还有扩展功能。需要一步步引导用户,确保他们能顺利部署。</think>部署开源语言模型进行角色扮演对话的完整流程如下,按步骤分解: 一、硬件准备(最低要求) 1. GPU显存:7B模型需6GB以上(推荐RTX 3060+) 2. 内存:16GB及以上 3. 存储:模型文件需要20-40GB空间(以LLaMA-7B为例) 二、模型选择(2023年推荐) ├─ 基础模型 ├─ LLaMA-2-7B(需申请许可) ├─ ChatGLM2-6B(中文优化) └─ Vicuna-7B(已对齐对话) ├─ 角色扮演特化 └─ Pygmalion-7B(专门设计角色扮演) 三、环境搭建 1. 安装Python 3.8+ ```bash conda create -n rpai python=3.8 conda activate rpai ``` 2. 安装核心依赖 ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers accelerate sentencepiece peft ``` 四、模型部署(以ChatGLM2-6B为例) 1. 下载模型 ```python from transformers import AutoModel, AutoTokenizer model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True) tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True) ``` 2. 创建对话管理类 ```python class RolePlayAgent: def __init__(self, system_prompt): self.history = [{"role": "system", "content": system_prompt}] def generate(self, query): self.history.append({"role": "user", "content": query}) response = model.chat(tokenizer, self.history) self.history.append({"role": "assistant", "content": response}) return response ``` 五、角色设定技巧 1. 使用System Prompt模板: ```text 你正在扮演[中世纪骑士]。你的说话风格应该: - 使用古英语词汇如"thee","thou" - 经常引用骑士守则 - 保持庄严而谦逊的语气 当前场景:{当前场景描述} ``` 2. 上下文维护示例: ```python # 保持最近5轮对话 def trim_history(history, max_length=5): return [history[0]] + history[-max_length*2:] ``` 六、性能优化方案 1. 4-bit量化加载 ```python model = AutoModel.from_pretrained( "THUDM/chatglm2-6b", load_in_4bit=True, device_map="auto" ) ``` 2. 使用Flash Attention(需GPU支持) ```bash pip install flash-attn ``` 七、部署方案选择 ├─ 本地API服务 └─ 使用FastAPI搭建 ```python from fastapi import FastAPI app = FastAPI() @app.post("/chat") async def chat_endpoint(query: str): return {"response": agent.generate(query)} ``` ├─ 可视化界面 └─ 使用Gradio构建 ```python import gradio as gr with gr.Blocks() as demo: chatbot = gr.Chatbot() msg = gr.Textbox() def respond(message, chat_history): response = agent.generate(message) chat_history.append((message, response)) return "", chat_history msg.submit(respond, [msg, chatbot], [msg, chatbot]) ``` 八、常见问题解决 1. 显存不足时: - 启用CPU卸载:`model.enable_cpu_offload()` - 使用流式响应:分块生成输出 2. 角色偏离时: - 每3轮对话重新注入system prompt - 使用LoRA微调(需准备角色数据集) 完整项目结构建议: ``` roleplay-ai/ ├── models/ # 模型文件 ├── configs/ # 角色配置文件 ├── utils/ # 工具脚本 ├── api.py # API服务入口 ├── webui.py # 网页界面 └── requirements.txt ``` 注意事项: 1. 首次运行会下载分词器等资源文件 2. 建议设置温度参数(temperature=0.7)平衡创意与稳定性 3. 复杂角色建议准备至少50条示例对话进行微调
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值