Phi-3 Forest Lab环境部署:使用Caddy反向代理+HTTPS暴露内网森林服务

1. 项目概述

Phi-3 Forest Lab是一个基于微软Phi-3 Mini 128K Instruct模型构建的极简主义AI对话终端。这个项目将前沿的轻量级大模型技术与自然审美设计相结合,为用户提供一个静谧、高效且富有逻辑的思考空间。

核心特点:

  • 搭载微软Phi-3-mini-128k-instruct模型
  • 支持128K Tokens超长上下文
  • 极简森系UI设计
  • 本地部署与安全访问

2. 环境准备

2.1 硬件要求

  • 显卡:NVIDIA GPU(推荐RTX 3090/4090)
  • 内存:至少16GB
  • 存储:20GB可用空间

2.2 软件依赖

# 基础环境
sudo apt update && sudo apt install -y python3-pip git curl

# Python依赖
pip install torch transformers streamlit

3. 基础部署

3.1 下载模型

git clone https://huggingface.co/microsoft/Phi-3-mini-128k-instruct
cd Phi-3-mini-128k-instruct

3.2 启动Streamlit服务

创建app.py文件:

import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(".")
tokenizer = AutoTokenizer.from_pretrained(".")

# 界面配置
st.set_page_config(page_title="Phi-3 Forest Lab")
user_input = st.text_input("向森林深处发出的讯息")

if user_input:
    inputs = tokenizer(user_input, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=128)
    st.write(tokenizer.decode(outputs[0]))

启动服务:

streamlit run app.py

4. Caddy反向代理配置

4.1 安装Caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

4.2 配置Caddyfile

创建/etc/caddy/Caddyfile

yourdomain.com {
    reverse_proxy localhost:7860
    tls your@email.com
}

4.3 启动Caddy服务

sudo systemctl enable caddy
sudo systemctl start caddy

5. HTTPS安全配置

5.1 自动获取证书

Caddy会自动处理SSL证书的获取和续期,确保添加了正确的域名解析。

5.2 防火墙设置

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

6. 高级配置

6.1 性能优化

# 修改app.py中的模型加载方式
model = AutoModelForCausalLM.from_pretrained(
    ".",
    device_map="auto",
    torch_dtype="auto"
)

6.2 对话历史持久化

# 在app.py中添加会话状态
if "history" not in st.session_state:
    st.session_state.history = []

if user_input:
    inputs = tokenizer(user_input, return_tensors="pt").to(model.device)
    outputs = model.generate(**inputs, max_length=128)
    response = tokenizer.decode(outputs[0])
    st.session_state.history.append((user_input, response))
    st.write(response)

7. 常见问题解决

7.1 端口冲突

如果7860端口被占用,可以修改Streamlit端口:

streamlit run app.py --server.port 8000

7.2 证书问题

检查Caddy日志:

journalctl -u caddy -f

7.3 模型加载失败

确保有足够的GPU内存,或尝试CPU模式:

model = AutoModelForCausalLM.from_pretrained(".", device_map="cpu")

8. 总结

通过本教程,我们完成了Phi-3 Forest Lab的完整部署流程:

  1. 基础环境准备与模型下载
  2. Streamlit交互界面搭建
  3. Caddy反向代理配置
  4. HTTPS安全访问设置
  5. 性能优化与功能扩展

这套方案不仅适用于Phi-3模型,也可以作为其他AI服务的部署参考。Caddy的自动HTTPS特性大大简化了安全配置流程,使得内网服务能够安全地暴露到公网。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐