在您自己的可用硬件上建立 GenAI 服务器。该项目提供了一个 Web 界面,可与 LLaMA 和稳定扩散模型(以及其他模型)交互,以生成文本、图像、视频和 3D。
许多人手头有一个不错的 GPU,并且愿意使用它,而不是从 OpenAI、Anthropic 等那里付费订阅。在这里,您可以托管自己的 AI 模型,尽管与那些出色的服务相比有很多限制。然后,您可以使用网络浏览器从任何地方访问它,例如您的手机或另一台计算机。
其前端托管在 GitHub Pages 上,而后端托管在可用的服务器计算机上。
设置完成后,前端将在https://[username].github.io/PersonalAIserver
上可用。请按照以下说明设置后端。
对于前端,只需要设置 GitHub 操作即可构建项目页面。在您的分叉存储库中,导航到Settings -> Pages -> Source
,并将其设置为“GitHub Actions”。当您推送到存储库时,构建将自动运行,这要归功于.github/workflows/main.yml
文件。
如果您想在本地运行前端,请按照以下说明操作。需要 Node.js,可从节点版本管理器 (nvm) 安装。
nvm install 20
npm install -D @shadcn/ui
npx shadcn@latest init # Select default style, any color, and dont use css variables.
npx shadcn@latest add alert button card input textarea # Accept defaults
npm install lucide-react
npm install -D @tailwindcss/typography
npm install clsx tailwind-merge
npm install
npm install sharp
npm run dev
这应该为前端提供服务http://localhost:3000
,您可以使用 Web 浏览器访问该前端。
它使用 conda 进行包管理,但您可以随意使用任何其他包管理器。
在后端目录的终端中,运行以下命令:
conda create -n personalai python=3.11
conda activate personalai
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt
users.json
文件,格式如下: {
"username1": {
"username": "username1",
"password": "password1",
"disabled": false
},
"username2": {
"username": "username2",
"password": "password2",
"disabled": false
}
...
}
.secret
文件。这用于加密 JWT 令牌。我建议使用以下命令生成一个: import secrets
secret_key = secrets.token_hex(32)
print(secret_key)
然后复制输出。
Settings -> Secrets and variables -> Actions
NEXT_PUBLIC_API_URL
且值为后端服务器 URL 的存储库密钥(更多详细信息如下)。示例:https: https://api.example.com
。backend/backend.py
中,调整第 40 行附近的CORSMiddleware
以包含前端的 URL。huggingface-cli login
来登录 Hugging Face,并使用上面创建的个人访问令牌作为密码。python backend/backend.py --public
运行后端,或者如果您只想在本地主机上运行服务器,则删除--public
。本地主机也要求您在本地运行前端。有许多选项可用于在公共 URL 托管后端,但我建议使用 Cloudflare Tunnel。 Cloudflare Tunnel 将流量从 Internet 路由到您的服务器,而不会暴露端口或您的本地 IP。它还支持 HTTPS、SSL 加密和 DDoS 保护,以及您需要自行设置和维护的其他安全功能。
其他选项包括:
对于 Cloudflare Tunnel,您将需要域名和 Cloudflare 帐户。
cloudflared tunnel login
。此步骤将打开一个浏览器窗口以使用您的 Cloudflare 帐户登录。cloudflared tunnel create genai-api
。此步骤生成隧道 ID,请注意后续步骤。 tunnel: <your-tunnel-id>
credentials-file: /home/user/.cloudflared/<tunnel-id>.json
ingress:
- hostname: <your-api-url>
service: http://localhost:8000
- service: http_status:404
<your-api-url>
应是您在 Cloudflare 的名称服务器中注册的域名,并且可以是子域。例如,如果您拥有example.com
,则可以使用genai.example.com
或api.example.com
。 5. 创建 DNS 记录cloudflared tunnel route dns <tunnel-id> <your-api-url>
。这将为 Cloudflare 创建隧道,将流量从互联网路由到您的服务器,而无需暴露端口或您的本地 IP。
在backend/backend.py
中,您可以更改使用的模型。在 Hugging Face 上找到您想要用于生成文本/图像的模型,然后调整ModelManager
模型配置(第 127 行)。默认情况下,使用 LLaMA 3.2-1B-Instruct 模型进行文本生成,使用 Stable Diffusion 3.5 介质模型进行图像生成。以下是测试的每个型号的 VRAM 要求。
型号类型 | 型号名称 | 显存使用量 (GB) | 笔记 |
---|---|---|---|
文本 | 元骆驼/骆驼-3.2-1B-指示 | 〜8 | 文本生成的基础模型 |
图像 | 稳定性ai/稳定扩散-3.5-中 | 〜13 | 在 RTX 4090 上运行良好 |
图像 | 稳定性ai/稳定扩散-3.5-大 | 〜20-30 | 长提示超过 4090 VRAM |
注意:VRAM 使用情况可能会因图像分辨率、文本提示长度和其他参数而异。显示的值是默认设置的近似值。支持量化变压器模型以进一步减少 VRAM 使用,但默认情况下不使用(请参阅backend/backend.py
第 178-192 行)。大型稳定扩散模型几乎无法放入我的 4090 的量化 VRAM 中。我的 4090 上的聊天机器人速度非常快,1024x1024 图像的 100 个步骤的图像生成最多需要 30 秒。
语言模型的系统提示可以在backend/system_prompt.txt
中找到。目前,它是 Anthropic 于 2024 年 10 月 22 日发布的 Claude 3.5 Sonnet 模型的旋转版本。 https://docs.anthropic.com/en/release-notes/system-prompts#claude-3-5-sonnet