NOTELocalAI is the free, Open Source OpenAI alternative. LocalAI act as a drop-in replacement REST API that’s compatible with OpenAI (Elevenlabs, Anthropic… ) API specifications for local AI inferencing. It allows you to run LLMs, generate images, audio (and not only) locally or on-prem with consumer grade hardware, supporting multiple model families. Does not require GPU.(摘自https://github.com/mudler/LocalAI)
本文旨在向你介绍如何使用 Docker 在安装了 Windows 11 操作系统的个人电脑上部署 LocalAI 服务
相比于 Ollama,LocalAI 支持更多类型的 AI 大模型,例如语音合成、图像生成等等,同时 LocalAI 也支持从多种途径下载模型文件,例如 HuggingFace、Ollama 和 Docker Hub
TIP本文 100% 由人类编写
安装Docker
CAUTIONDocker 官网为https://www.docker.com,其他号称 “Docker官方网站” 的网站一律为假!!!由于受不可抗力影响,Docker 网站目前访问受阻,导致从Docker Hub拉取镜像往往出现
速度慢、拉取超时等问题,但是您可以使用诸如Steamcommunity 302(下载链接)等工具加速访问
访问https://www.docker.com下载Docker Desktop Installer.exe可执行文件(当然,Docker Desktop 也在微软商店提供安装,但我未验证这种安装方法是否可以更改安装位置)
更改安装位置
由于Docker Desktop默认安装在 C 盘(C:\Program Files\Docker\Docker),我们可以通过命令行将Docker Desktop安装到指定目录(在文件所在的目录启动终端)
.\'Docker Desktop Installer.exe' install --installation-dir="D:\Docker"这将使Docker Desktop安装到D:\Docker,需要提前在D盘根目录下创建名为Docker的文件夹,否则命令会执行失败
安装时选择默认选项即可,安装完成后重启电脑,这会启用WSL(适用于 Linux 的 Windows 子系统)

电脑重启后会弹出以下弹窗,请根据提示升级WSL版本,此操作需要良好的网络连接

如果你不慎关闭此窗口,请以管理员身份运行终端并执行以下命令:
wsl.exe --update当终端输出类似以下内容时,你可以安全地关闭终端:

启动Docker Desktop并跳过登录

更改默认镜像保存位置
Docker 的镜像默认安装在%UserProfile%\AppData\Local\Docker\wsl目录下,建议将目录更改到除 C 盘外的其他位置,Docker 会自动在选定的目录下增加子DockerDesktopWSL文件夹

点击Apply & restart保存设置

安装LocalAI
访问LocalAI官方文档 https://localai.io/installation/docker/,根据设备硬件配置选择合适的 Images 运行命令,这里以 NVIDIA CUDA 13为例
TIP在 Docker 内置的终端运行以下所有命令:点击终端图标再点击
Enable(首次)
拉取镜像
Standard Images(标准镜像)标准镜像不包含预配置的模型,如果您想手动配置模型,请使用这些镜像。
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-13All-in-One (AIO) Images(All-in-One 镜像,推荐)适合新手 - 这些镜像已预先配置好模型和后端,开箱即可使用。
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-aio-gpu-nvidia-cuda-13NOTE接下来我们使用 All-in-One 镜像(但是这个镜像占用的空间会非常大,虚拟磁盘文件大约有
40GB,如果你的硬盘没有那么大的空间,建议你拉取标准镜像,这个会相对小亿点,大约在10GB左右,就是配置相对会比较麻烦)
镜像拉取的整个过程都需要稳定的网络连接,若您的网络连通顺畅,您应该看到类似以下的输出内容(已抹除部分 GPU 硬件信息):

此时关闭终端(不是结束运行)你将看到以下内容,这表明 LocalAI 已成功安装,ID 为 f89d05a440f1******** 的容器已成功运行:

NOTE等待
模型以及后端文件下载完成(可在日志(Logs)或终端中查看进度),否则http://localhost:8080无法打开完整安装完成后,
docker_data.vhdx文件大小将达到40GB以上
在 Docker 内执行 nvidia-smi 和 nvcc --version 命令,你应当看到以下类似的输出(已抹除部分 GPU 硬件信息):

这表明已成功启动 CUDA(NVIDIA) 加速
此时访问http://localhost:8080,你将看到 LocalAI WebUI 的初始界面:

恭喜!软件安装阶段大功告成!👍
部署AI模型
TIP访问https://models.localai.io(会重定向到https://localai.io/gallery.html)查看受支持的 AI 模型
由于 All-in-One 镜像内置了 8 个模型(gpt-4、gpt-4o、jina-reranker-v1-base-en、silero-vad、stablediffusion、text-embedding-ada-002、tts-1 和 whisper-1)(磁盘空间:⚠️危)
TIP点击
Browse Gallery查找并下载模型如果你发现容器启动时日志有错误信息,且在容器内的
model文件夹下发现有后缀为partial的文件,请将其删除并重启容器,这会重新下载该未完全下载的文件
我们来测试一下GPT-4o模型:

tts-1(生成的语音文件这里就不放出来了)

其余的这里就不展示了,具体的请查看 LocalAI 官方文档
压缩虚拟硬盘映像文件
NOTEWindows 的 Docker Desktop 基于 WSL2 来运行,所有的 Image、Container 数据都会被放到 WSL2 的虚拟磁盘文件(vhdx)中。而 WSL2 的 vhdx 具有“动态”特性,即当磁盘文件创建时,初始化一个最大的上限容量(默认是 1TB ),当里面数据增加时,vhdx 所占的空间随之增加,直到上限,但当里面的数据被移除时,vhdx 所占的空间并不会随之减小。这导致即使在 Docker 里删除了镜像文件,也无法即时释放磁盘的存储空间。
首先你需要关闭 WSL(如果你开启了 Docker Desktop,或者 Docker Desktop 关闭的时候卡住了,请重启电脑,记得关闭 Docker Desktop 的自启动)
wsl --shutdown以管理员身份运行终端:
diskpart类似输出:
Windows PowerShell版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS C:\Users\Admin> diskpart
Microsoft DiskPart 版本 10.0.26100.1150
Copyright (C) Microsoft Corporation.在计算机上: WINDOWS11-ADMIN
DISKPART>输入并执行:
select vdisk file="<vhdx文件路径>"例如:
Microsoft DiskPart 版本 10.0.26100.1150
Copyright (C) Microsoft Corporation.在计算机上: WINDOWS11-ADMIN
DISKPART>select vdisk file="E:\DockerDesktopWSL\disk\docker_data.vhdx"
DiskPart 已成功选择虚拟磁盘文件。
DISKPART>压缩磁盘(依次执行):
attach vdisk readonlycompact vdisk若遇到报错:
DISKPART> compact vdisk
虚拟磁盘服务错误:所请求的操作需要以只读方式连接虚拟磁盘。则先分离磁盘文件:
detach vdisk再依次执行以下命令:
attach vdisk readonlycompact vdisk就像这样:
DISKPART> compact vdisk
虚拟磁盘服务错误:所请求的操作需要以只读方式连接虚拟磁盘。
DISKPART> detach vdisk
DiskPart 已成功分离虚拟磁盘文件。
DISKPART> attach vdisk readonly
100 百分比已完成
DiskPart 已成功连接虚拟磁盘文件。最后你应该看到:
DISKPART> compact vdisk
100 百分比已完成
DiskPart 已成功压缩虚拟磁盘文件。退出 DiskPart:
detach vdiskexit大功告成:
DISKPART> detach vdisk
DiskPart 已成功分离虚拟磁盘文件。
DISKPART> exit
退出 DiskPart...PS C:\Users\Admin>此时你再去文件资源管理器里看看,你的磁盘空间应该得到了一定的释放
TIP值得注意的是,由于
模型参数量、模型版本以及设备算力的差异,您在本地运行的模型在使用体验上可能不如在线模型

