From 799fe7166673fc725c3bb897af6a84f86cd6c6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A6=82=E5=A8=81?= Date: Thu, 23 Oct 2025 17:03:43 +0800 Subject: [PATCH] init --- .gitignore | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ .python-version | 1 + README.md | 35 +++++++++++++++++++++++ requirements.txt | 4 +++ start.sh | 43 ++++++++++++++++++++++++++++ stop.sh | 20 +++++++++++++ vllm.pid | 1 + 7 files changed, 177 insertions(+) create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 README.md create mode 100644 requirements.txt create mode 100644 start.sh create mode 100644 stop.sh create mode 100644 vllm.pid diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99beed7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +# 专为 macOS 设计的 .gitignore 文件 +# 生成日期:2025-10-23 + +### macOS 系统特定文件 ### +# Finder 和操作系统生成的隐藏文件 +models +.DS_Store +.AppleDouble +.LSOverride + +# 图标必须文件,在 Retina 显示屏上使用 +Icon? + +# 缩略图 +._* + +# 文件可能出现在 Apple 文件共享中 +.Spotlight-V100 +.Trashes + +### 常见开发环境 ### +# 日志文件 +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# 依赖目录 +node_modules/ +*/node_modules + +# 编译输出目录 +build/ +dist/ +*.min.js +*.min.css + +# 临时文件 +*.tmp +*.temp + +# 环境变量文件(包含敏感信息,务必忽略) +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +### 集成开发环境 (IDE) ### +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# IntelliJ IDEA +.idea/ +*.iws +*.iml +*.ipr + +### 其他通用忽略规则 ### +# 系统文件 +Thumbs.db +ehthumbs.db +Desktop.ini + +# 备份文件 +*.bak +*.backup +*~ + diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..4eba2a6 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13.0 diff --git a/README.md b/README.md new file mode 100644 index 0000000..98b0d43 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +## 简介 + +本来想直接在docker里面跑 vllm ,但是 mac m2 没有对应的镜像,所以改为直接系统上用python 跑 + +## 准备 + +下载需要运行的模型,记得修改 `start.sh` 中的模型配置 + +例: 使用 `Qwen2.5-0.5B-Instruct` 模型调试 + +``` +# mac 系统 +# 1. 安装 git-lfs,Git LFS(Large File Storage)是 Git 的一个扩展,专门用于高效地版本控制大型文件,如音频、视频、数据集、图形资产等 +brew install git-lfs +git lfs install + +# 2. 下载模型 +mkdir models +cd models +git clone https://www.modelscope.cn/Qwen/Qwen2.5-0.5B-Instruct.git +``` + +## 命令 + +```shell +# 启动 +sh start.sh + +# 关闭 +sh stop.sh + +# 查看是否成功 +curl http://localhost:8022/v1/models +``` + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ae9a0df --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +torch +torchvision +torchaudio +vllm==0.11.0 \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..14ea141 --- /dev/null +++ b/start.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# 启动本地 vLLM OpenAI API 服务 (MPS 模式) + +# ========= 配置区域 ========= +MODEL_PATH="./models/Qwen2.5-0.5B-Instruct" +MODEL_NAME="Qwen2.5-0.5B-Instruct" +PORT=8022 +LOG_FILE="vllm.log" +PID_FILE="vllm.pid" +VENV_DIR="venv-vllm" +API_KEY="sk-local-827ccb0eea8a706c4c34a16891f84e7b" +# =========================== + +echo "🔍 检查 Python 虚拟环境..." +if [ ! -d "$VENV_DIR" ]; then + echo "⚙️ 创建虚拟环境..." + python3 -m venv "$VENV_DIR" +fi + +source "$VENV_DIR/bin/activate" + +# 检查 vllm 是否安装 +if ! python -c "import vllm" &>/dev/null; then + echo "📦 安装 vLLM 和 PyTorch..." + pip install --upgrade pip + pip install torch torchvision torchaudio + pip install vllm==0.11.0 +fi + +# 启动 vLLM +echo "🚀 启动 vLLM API Server..." +nohup python -m vllm.entrypoints.openai.api_server \ + --model "$MODEL_PATH" \ + --served-model-name "$MODEL_NAME" \ + --max-model-len 2048 \ + --host 0.0.0.0 \ + --port $PORT \ + --api-key "$API_KEY" > "$LOG_FILE" 2>&1 & + +echo $! > "$PID_FILE" +echo "✅ vLLM 已启动 (PID=$(cat $PID_FILE))" +echo "📡 访问地址: http://localhost:$PORT/v1" +echo "📜 日志文件: $LOG_FILE" diff --git a/stop.sh b/stop.sh new file mode 100644 index 0000000..8068c8d --- /dev/null +++ b/stop.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 停止本地 vLLM 服务 + +PID_FILE="vllm.pid" + +if [ ! -f "$PID_FILE" ]; then + echo "⚠️ 未找到 PID 文件,vLLM 可能未运行。" + exit 1 +fi + +PID=$(cat "$PID_FILE") +if ps -p "$PID" > /dev/null 2>&1; then + echo "🛑 停止 vLLM (PID=$PID)..." + kill "$PID" + rm -f "$PID_FILE" + echo "✅ 已关闭 vLLM 服务。" +else + echo "⚠️ 未找到运行中的 vLLM 进程。" + rm -f "$PID_FILE" +fi diff --git a/vllm.pid b/vllm.pid new file mode 100644 index 0000000..b1af717 --- /dev/null +++ b/vllm.pid @@ -0,0 +1 @@ +56356