LocalAI项目从源码构建指南
LocalAI 项目地址: https://gitcode.com/gh_mirrors/loc/LocalAI
前言
LocalAI是一个强大的本地AI模型运行框架,它允许开发者在本地环境中高效运行各种AI模型。本文将详细介绍如何从源码构建LocalAI,包括不同平台和硬件加速方案的构建方法。
构建方式概述
LocalAI提供两种主要构建方式:
- 构建为单一可执行文件 - 轻量便携,但功能可能受限
- 构建为容器镜像 - 包含完整依赖,功能全面
构建准备
基础环境要求
无论选择哪种构建方式,都需要以下基础工具:
- Golang 1.21或更高版本
- Cmake和make构建工具
- GCC编译器
- GRPC相关依赖
平台特定依赖安装
macOS系统
brew install abseil cmake go grpc protobuf protoc-gen-go protoc-gen-go-grpc python wget
pip install --user grpcio-tools
Debian/Ubuntu系统
apt install cmake golang libgrpc-dev make protobuf-compiler-grpc python3-grpc-tools
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@1958fcbe2ca8bd93af633f11e97d44e567e945af
基础构建流程
- 获取源码
- 进入项目目录
- 执行构建命令
make build
构建完成后会生成local-ai
可执行文件。
构建选项详解
主要构建变量
| 变量名 | 默认值 | 说明 | |-------|-------|------| | BUILD_TYPE
| None | 指定加速类型:cublas
, openblas
, clblas
, metal
, hipblas
, sycl_f16
, sycl_f32
| | GO_TAGS
| tts stablediffusion
| 指定功能标签:stablediffusion
, tts
, tinydream
| | CLBLAST_DIR
| 空 | 指定CLBlast库路径 | | CUDA_LIBPATH
| 空 | 指定CUDA库路径 | | BUILD_API_ONLY
| false | 仅构建API,不构建后端 |
CPU指令集优化
对于不支持某些指令集的老旧CPU,可以禁用相关优化:
CMAKE_ARGS="-DGGML_F16C=OFF -DGGML_AVX512=OFF -DGGML_AVX2=OFF -DGGML_AVX=OFF -DGGML_FMA=OFF" make build
容器镜像构建
构建容器镜像需要Docker或Podman等容器引擎:
docker build -t localai .
docker run localai
镜像构建参数:
| 变量名 | 默认值 | 说明 | |-------|-------|------| | IMAGE_TYPE
| extras
| 构建类型:core
(核心功能), extras
(完整功能) |
平台特定构建指南
macOS构建示例
- 安装Xcode(从App Store)
- 安装构建工具
- 获取模型文件
- 运行LocalAI
# 获取phi-2模型
wget https://huggingface.co/TheBloke/phi-2-GGUF/resolve/main/phi-2.Q2_K.gguf -O models/phi-2.Q2_K
# 复制模板
cp -rf prompt-templates/ggml-gpt4all-j.tmpl models/phi-2.Q2_K.tmpl
# 运行LocalAI
./local-ai --models-path=./models/ --debug=true
macOS常见问题解决
- metal工具缺失:确保安装完整Xcode
- xcrun错误:重置开发工具路径
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
- 性能问题:调整模型配置中的
gpu-layers
参数 - 编译错误:重新安装依赖并清理构建
brew reinstall abseil cmake go grpc protobuf wget make clean make build
功能扩展构建
图像生成支持
需要OpenCV和Gomp:
make GO_TAGS=stablediffusion build
# 或
make GO_TAGS=tinydream build
文本转语音支持
需要piper-phonemize:
make GO_TAGS=tts build
硬件加速方案
OpenBLAS(软件加速)
make BUILD_TYPE=openblas build
CuBLAS(NVIDIA GPU)
需要CUDA工具包:
make BUILD_TYPE=cublas build
HipBLAS(AMD GPU)
需要ROCm环境:
make BUILD_TYPE=hipblas GPU_TARGETS=gfx1030
CLBLAS(AMD/Intel GPU)
需要OpenCL和CLBlast:
make BUILD_TYPE=clblas build
SYCL(Intel GPU)
需要Intel oneAPI Base Toolkit:
make BUILD_TYPE=sycl_f16 build # float16
make BUILD_TYPE=sycl_f32 build # float32
Metal(Apple Silicon)
自动检测Metal支持:
make build
高级构建示例
构建特定后端
make GRPC_BACKENDS=backend-assets/grpc/llama-cpp build
指定llama.cpp版本
CPPLLAMA_VERSION=<版本号或SHA> make build
结语
通过本文的详细指南,您应该能够根据自身需求和环境成功构建LocalAI。无论是追求轻量化的二进制构建,还是功能完整的容器镜像,亦或是针对特定硬件的加速方案,LocalAI都提供了灵活的构建选项。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考