Skip to content

Dajucoder/LLM-Local

Repository files navigation

🤖 LLM-Local - 本地大语言模型部署系统

一个跨平台的本地大语言模型推理系统,支持 Apple Silicon (MPS)、CUDA 和 CPU,可以在个人电脑上轻松运行各种开源大模型。

✨ 特性

  • 🚀 多平台支持: 自动检测并使用最优加速方案
    • Apple Silicon (M1/M2/M3) - MLX 原生优化
    • NVIDIA GPU - CUDA 加速
    • CPU - 通用兼容
  • 💬 多轮对话: 支持上下文记忆的对话功能
  • 🎯 模型切换: 轻松切换不同的开源模型
  • 📦 开箱即用: 自动下载和配置模型
  • 流式输出: 实时显示生成内容,体验更流畅
  • 📝 日志记录: 完整的系统运行日志,方便调试和问题追踪
  • 💾 对话历史: 自动保存用户与 AI 的对话记录
  • 🔒 离线运行: 支持完全离线使用已下载的模型

📋 支持的模型

  • Qwen2.5 系列 (1.5B / 7B / 14B)
  • Llama 3.2 系列
  • Gemma 2 系列
  • 其他 Hugging Face 兼容模型

🛠️ 安装

前置要求

  • Python 3.9+
  • macOS 12.3+ (使用 MLX) 或其他操作系统
  • 至少 8GB RAM (推荐 16GB+)

快速开始

  1. 克隆项目
git clone https://github.com/Dajucoder/LLM-Local.git
cd LLM-Local
  1. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
  1. 安装依赖

对于 Apple Silicon (M1/M2/M3):

pip install -r requirements-mlx.txt

对于 NVIDIA GPU (CUDA):

pip install -r requirements-cuda.txt

对于通用 CPU:

pip install -r requirements.txt

🚀 使用方法

方式一: 一键启动 (推荐)

./run.sh

脚本会自动创建虚拟环境、安装依赖并启动程序。

方式二: 自动选择最优平台

python main.py

程序会自动检测你的硬件并选择最优的推理引擎。

方式二: 手动指定平台

使用 MLX (Apple Silicon):

python main.py --backend mlx

使用 PyTorch (CUDA/CPU):

python main.py --backend pytorch

方式三: 直接运行平台特定脚本

MLX 版本:

python src/inference/mlx_inference.py

PyTorch 版本:

python src/inference/pytorch_inference.py

⚙️ 配置

编辑 config/config.yaml 文件来自定义配置:

model:
  default_model: "Qwen/Qwen2.5-1.5B-Instruct"
  torch_dtype: "float16"
  max_new_tokens: 512
  temperature: 0.7
  top_p: 0.9

system:
  device_preference: "auto"  # auto / mps / cuda / cpu

logging:
  log_dir: "./logs"          # 日志目录
  console_output: true       # 控制台输出
  file_output: true          # 文件输出

advanced:
  cache_dir: "./models"      # 模型存储位置
  log_level: "INFO"          # 日志级别

📊 日志功能

系统提供完整的日志记录功能:

查看日志

# 列出所有日志文件
python view_logs.py list

# 查看最新日志
python view_logs.py view

# 查看指定日志文件
python view_logs.py view logs/llm-local_20251127.log

# 只查看错误日志
python view_logs.py view --level ERROR

# 搜索关键词
python view_logs.py view --search "模型加载"

# 查看最后 100 行
python view_logs.py view -n 100

分析日志

# 分析最新日志
python view_logs.py analyze

# 分析指定日志
python view_logs.py analyze logs/llm-local_20251127.log

清理日志

# 预览要删除的文件(7天前)
python view_logs.py clean --days 7

# 实际删除
python view_logs.py clean --days 7 --execute

启用调试模式

# 启用详细日志
python main.py --debug

📚 项目结构

LLM-Local/
├── src/
│   ├── inference/          # 推理引擎
│   │   ├── pytorch_inference.py  # PyTorch 实现(CUDA/CPU)
│   │   └── mlx_inference.py      # MLX 实现(Apple Silicon)
│   ├── utils/              # 工具模块
│   │   ├── device_manager.py     # 设备检测和管理
│   │   ├── config_manager.py     # 配置管理
│   │   └── logger.py             # 日志管理(含对话日志)
│   └── models/             # 模型相关
├── models/                 # 模型存储目录
│   └── hub/                # HuggingFace 模型缓存
├── logs/                   # 日志目录
│   ├── llm-local_*.log     # 系统运行日志
│   └── chat_history_*.log  # 对话历史日志
├── config/
│   └── config.yaml         # 配置文件
├── docs/                   # 文档
├── examples/               # 示例代码
├── tests/                  # 测试
├── main.py                 # 主入口
├── requirements.txt        # 基础依赖
├── requirements-mlx.txt    # MLX 依赖
├── requirements-cuda.txt   # CUDA 依赖
├── setup.py               # 安装配置
└── README.md              # 说明文档

🎯 使用示例

from src.inference.pytorch_inference import PyTorchInference

# 创建推理实例
inference = PyTorchInference(model_id="Qwen/Qwen2.5-1.5B-Instruct")

# 单轮对话
response = inference.generate("你好,介绍一下你自己")
print(response)

# 多轮对话
messages = [
    {"role": "system", "content": "你是一个有帮助的AI助手"},
    {"role": "user", "content": "什么是机器学习?"}
]
response = inference.chat(messages)
print(response)

🔧 常见问题

1. 模型存储位置?

模型默认下载到项目根目录的 models 文件夹中。你可以在 config/config.yaml 中修改:

advanced:
  cache_dir: "./models"  # 模型存储位置

2. 模型下载慢?

设置 HuggingFace 镜像:

export HF_ENDPOINT=https://hf-mirror.com

3. 内存不足?

尝试使用更小的模型或量化版本:

  • Qwen2.5-1.5B-Instruct (推荐入门)
  • 使用 4-bit 量化版本

4. Mac 上速度慢?

确保使用 MLX 版本以获得最佳性能。

📖 更多文档

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License - 详见 LICENSE

🙏 致谢

📞 联系方式


⭐ 如果这个项目对你有帮助,请给个 Star!

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors