news 2026/10/5 13:19:09

用Docker和vLLM本地部署BGE-M3嵌入模型:零基础实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Docker和vLLM本地部署BGE-M3嵌入模型:零基础实战指南

简介:面向零基础开发者与NLP研究人员的部署实战指南,系统讲解如何借助Docker容器化与vLLM推理框架,在本地完成BGE-M3多语言文本嵌入模型的部署与调用。资源为单份PDF文档,全包仅1个文件、1.35MB,内容涵盖Docker安装与国内镜像配置、NVIDIA运行时设置、vLLM官方镜像使用、ModelScope模型下载等关键环节,并附有docker run命令示例及针对共享内存、GPU显存利用率的细节调整。文中不仅梳理了BGE-M3支持稠密检索、稀疏检索和多向量检索的特性,还给出隐私保护、定制化与成本可控三大本地部署优势,并提供从LangChain加载PDF、文本分块到向量存储与相似度查询的完整示例。无论用于快速验证模型能力,还是集成到现有NLP流程,都能提供清晰的排错思路与可复现操作步骤。已有644人学习,适合希望低成本掌握本地大模型部署的读者。

1. 零基础也能把 BGE-M3 跑起来:Docker 和 vLLM 不是劝退门槛

先聊一个很多新手容易误解的地方:BGE-M3 不是那种动辄上百亿参数的大语言模型,它是一个多功能的文本嵌入模型,擅长把句子、段落甚至长达 8K token 的文档变成高质量的向量,同时支持稠密检索、稀疏检索和多向量检索三种方式。正因为它体积适中、效果能打,很多做 RAG、知识库问答和语义搜索的团队都会优先选它做底座。而“本地部署”这件事,早些年确实要折腾 Python 环境、CUDA 版本、依赖冲突,看着就头大;现在用 Docker 加 vLLM,两条命令就能把推理服务拉起来,新手只要照着做,基本能避开 90% 的环境坑。

这篇文章就围绕一条主线展开:先准备好 Docker 环境,再拉取 vLLM 镜像,把 BGE-M3 的权重加载进去,最后通过 OpenAI 兼容接口调用它。你不需要提前装好 Python,也不需要手动编译任何东西,全程都是在容器里完成。读完你会发现,本地部署一个文本嵌入模型,本质上就是“写一个 compose 文件、启动服务、发一个 HTTP 请求”三步。如果你之前试过本地部署大语言模型但被 CUDA 版本折磨过,这篇文章的路线会更省心——vLLM 官方镜像已经把这些底层依赖打包好了,你要做的只是选对版本、配好参数。

2. 搞清楚 BGE-M3 和 vLLM 各自该干什么:选型逻辑与硬件底线

2.1 BGE-M3 到底是什么,为什么嵌入模型值得单独部署

BGE-M3 是智源研究院开源的一个多语言文本嵌入模型,名字里的 M 代表 Multi-Linguality、Multi-Functionality、Multi-Granularity。通俗点说,它支持 100 多种语言(中文效果尤其好),一个模型同时输出稠密向量、稀疏向量和多向量,而且最长能处理 8192 个 token 的文本。和早期常用的 BGE-large-zh 比,M3 的最大优势是不用按语言分模型,也不用为了长文档做截断——知识库里的合同、论文、产品说明书这种动辄几千字的文本,M3 能整段编码,检索召回率明显更稳。

嵌入模型和大语言模型是两类东西。大语言模型负责“生成”,输入提示词输出文字;嵌入模型负责“理解”,输入文本输出一串数字向量。在 RAG 流程里,文档要被切成块,再用嵌入模型转成向量存进向量数据库,用户提问时也要用同一个模型转成向量去做相似度检索。所以嵌入模型是 RAG 的“翻译官”,如果这个翻译官不稳定,后面检索再优化也白搭。这也是为什么我建议你单独用 vLLM 部署一个嵌入服务,而不是图省事把它塞进大模型推理进程里——分开部署,升级和排障都清爽。

2.2 vLLM 在嵌入场景里能做什么,以及为什么不用 Ollama 或 sentence-transformers

vLLM 本身是为大模型推理优化的引擎,但它同样支持嵌入模型,通过 OpenAI 兼容的 /v1/embeddings 接口对外提供服务。很多人不知道,vLLM 从 0.4 版本开始就陆续支持了嵌入和重排模型这类非生成任务;到了 0.6 以后,对 BGE 系列的兼容已经很成熟。选 vLLM 而不是 sentence-transformers,核心原因是吞吐量和显存管理:sentence-transformers 是每次请求独立跑一次推理,并发一高显存释放不干净,延迟也不稳定;vLLM 会做 continuous batching,把多个请求拼在一起推理,显存利用率高很多,生产环境更靠得住。

那为什么不建议零基础用户直接用 Ollama?Ollama 做聊天模型体验确实好,但嵌入模型的支持和参数控制还是偏黑匣子,比如 BGE-M3 的稀疏向量输出、多向量输出,Ollama 的接口不灵活,很难满足后续要做混合检索的需求。vLLM 的 /v1/embeddings 接口和 OpenAI 完全一致,你现在用 OpenAI 的 embeddings 接口写的代码,以后切到本地服务只需要改 base_url 和 api_key,代码几乎零改动。这一点对于有过云端 API 调用经验的读者来说,迁移成本极低。

2.3 硬件底线:显存、内存和磁盘,别在第一步就翻车

先给结论:跑 BGE-M3 的 FP16 版本,大约需要 2.5GB 显存(权重约 2.2GB 加上激活和 KV cache),所以一张 6GB 显存的显卡就能比较舒服地跑起来;如果是 4GB 显存的卡,可以用量化版本做压缩,但检索效果会有轻微损失。如果你只有 CPU 机器,也不是完全不能跑,但编码速度会慢到让你怀疑人生,一个 512 token 的句子可能要等两三秒,批量处理几千条文档就非常劝退了。

我一般会这样给新人划底线:NVIDIA 显卡显存 6GB 以上是舒适区,8GB 以上可以同时跑一个嵌入模型和一个小规模的重排模型;内存建议 16GB 起步,因为 Docker 和 vLLM 加载模型时要先把权重读进内存再加载到显存;磁盘预留至少 10GB,镜像本身约 2GB,模型权重约 2.3GB,加上日志和临时文件,10GB 算是安全值。另外,vLLM 对 CUDA 版本有要求,但这一点已经被官方镜像解决了——你用 Docker 拉镜像时,镜像内部已经装好了匹配的 CUDA runtime,不需要在宿主机上装任何 CUDA,只要显卡驱动够新就行。

3. 第一次在本地跑通 BGE-M3 嵌入服务:Docker 与 vLLM 的最小可复现步骤

3.1 安装 Docker 并验证环境:Windows、macOS 和 Linux 分别注意什么

无论你用哪个操作系统,第一步都是装 Docker。Windows 用户装 Docker Desktop,注意 BIOS 里必须开启虚拟化(Intel VT-x 或 AMD-V),否则启动时会遇到一个经典报错:“Docker Desktop failed to start because virtualisation support wasn't detected”——这个问题在热搜里频繁出现,几乎每个新手都会撞上。解决办法是在 BIOS 里把虚拟化开关打开,然后在 Windows 功能里启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”,重启后再启动 Docker Desktop,基本就过了。

macOS 用户相对省心,装 Docker Desktop for Mac 即可,但 Apple Silicon 芯片的机器要注意:vLLM 官方镜像默认是基于 x86_64 的 CUDA 镜像,M 系列芯片跑不了。不过 BGE-M3 只有 2.2GB 大小,你可以在 Mac 上用 CPU 模式跑,速度虽然慢,但验证接口通不通没问题。Linux 用户最直接,装好 Docker Engine 后用 nvidia-container-toolkit 让容器识别 GPU,这一步别漏掉,否则容器里看不到显卡。装完后验证环境很简单,执行 docker run --rm hello-world 确认 Docker 本身没问题,再执行 docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi 确认 GPU 能透传进容器。

# 验证 Docker 是否正常 docker run --rm hello-world # 验证 GPU 是否能被 Docker 容器识别(Linux/NVIDIA 用户) docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi # 查看宿主机 GPU 状态(对比容器内输出) nvidia-smi

第一段命令是 Docker 的体检,第二段是 GPU 透传的体检。如果你的显卡驱动够新而且 nvidia-container-toolkit 安装正确,容器里执行 nvidia-smi 应该能看到和宿主机一样的显卡信息。这一步如果失败,后续 vLLM 服务会直接报“CUDA unavailable”的错误,所以这里值得花 10 分钟确认清楚。

3.2 拉取 vLLM 镜像并启动 BGE-M3:关键参数逐个拆解

现在到了核心环节。vLLM 官方提供了一个带 OpenAI 兼容 API 的镜像,直接拉下来用就行。这里要注意镜像标签的选择:如果你用的是 NVIDIA 显卡,拉 vllm/vllm-openai 的最新版即可;如果显卡较老(比如 10 系、20 系),最好挑一个兼容老驱动版本的镜像,否则 CUDA 初始化会报错。启动命令的骨架是——用 docker run 跑容器,把模型名称指定为 BAAI/bge-m3,vLLM 会自动从 HuggingFace 下载权重。

# 拉取 vLLM 官方镜像(约 2GB,视网络情况等待数分钟) docker pull vllm/vllm-openai:latest # 启动 BGE-M3 嵌入服务(NVIDIA GPU 环境) docker run --gpus all \ -p 8000:8000 \ --ipc=host \ -v ~/.cache/huggingface:/root/.cache/huggingface \ vllm/vllm-openai:latest \ --model BAAI/bge-m3 \ --task embedding \ --max-model-len 8192 \ --gpu-memory-utilization 0.9 \ --trust-remote-code

这里的参数我逐个说明。--gpus all让容器使用宿主机全部 GPU;-p 8000:8000把容器内部的推理端口映射到本机,后续发请求都走这个端口;--ipc=host是 vLLM 官方推荐加的,因为 vLLM 内部用共享内存做数据交换,不写这一项在高并发时可能提示共享内存不足;-v挂载 HuggingFace 的缓存目录到宿主机,这样模型只需下载一次,下次启动秒加载;--model指定模型名,vLLM 会去 HuggingFace 拉取权重;--task embedding是告诉 vLLM 我们跑的是嵌入任务而不是生成任务,这个参数至关重要,漏了会把 BGE-M3 当成生成模型来跑,直接报错;--max-model-len 8192是对齐 M3 的最大上下文长度;--gpu-memory-utilization 0.9表示最多允许 vLLM 使用 90% 的显存。

3.3 用 curl 验证嵌入服务:从启动日志到向量输出的一次完整闭环

启动过程可能需要一两分钟,当终端出现类似“Uvicorn running on http://0.0.0.0:8000”的日志时,说明服务已经就绪。这时打开另一个终端,用 curl 发一个嵌入请求。如果你之前的代码是调 OpenAI 的接口,这里体验会非常顺滑——接口路径和请求结构几乎一模一样。

# 健康检查:确认服务存活 curl http://localhost:8000/health # 发送嵌入请求:注意 model 字段必须是服务启动时指定的名字 curl http://localhost:8000/v1/embeddings \ -H "Content-Type: application/json" \ -d '{ "model": "BAAI/bge-m3", "input": ["深度学习模型部署需要关注显存效率", "RAG 系统要选对嵌入模型"] }'

返回的 JSON 里会有一个data数组,每个元素包含embedding和index。embedding是一个 1024 维的浮点数组,这正是 BGE-M3 输出的稠密向量维度。注意看返回里的model字段,它必须和你请求里传的一致,否则客户端 SDK 可能报错。到这里,最小闭环已经走通了——你通过一个标准 HTTP 请求,在本地拿到了文本向量,接下来要做的是把它接进自己的代码。

4. 用 Docker Compose 固化部署:从一次性命令到可复用的生产配置

4.1 把 docker run 改写成 compose 文件:为什么要写配置文件而不是复制命令

上一步的 docker run 命令能跑通,但只适合临时验证。一旦你要重启服务、换机器部署、或者让团队其他人复现,靠历史命令里的长串参数就太容易出错了。常见的做法是把它改写成 docker-compose.yml,让整个服务变成一个可复用的配置文件,放在 Git 里管理。以后启动服务就只需要两条命令:docker compose up -d 启动,docker compose logs -f 看日志,其他什么都不用记。

Compose 文件的好处不只是简化命令。它有明确的服务名、重启策略、日志限制,还能在 Docker Desktop 的图形界面里直观看到容器状态和资源占用。更重要的是,如果你后续要同时部署嵌入服务、向量数据库、RAG 编排引擎,把它们写进同一个 compose 文件,用 depends_on 控制启动顺序,整个本地环境一条命令就能拉起。这也是为什么很多本地部署教程都会推荐先用 Docker Compose 方案,而不是裸 docker run。

4.2 一份可直接抄作业的 docker-compose.yml:参数对照与资源解释

下面这份 compose 文件是我实际在用的精简版本,覆盖了嵌入服务的主要需求。它和上一章的 docker run 命令做的事完全一样,但额外加了自动重启、日志大小限制和命名空间隔离。

version: "3.8" services: embedding: image: vllm/vllm-openai:latest container_name: bge-m3-embedding restart: unless-stopped ports: - "8000:8000" ipc: host volumes: - ~/.cache/huggingface:/root/.cache/huggingface environment: - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-} command: > --model BAAI/bge-m3 --task embedding --max-model-len 8192 --gpu-memory-utilization 0.9 --trust-remote-code --served-model-name bge-m3 deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] shm_size: "16gb"

逐行解释几个容易忽略的配置项。restart: unless-stopped让容器在宿主机重启或服务异常退出后自动拉起,这是生产环境的基础要求;container_name固定容器名,方便用 docker logs bge-m3-embedding 查看日志;environment里预留了 HuggingFace Token 的注入位,如果你要下载 gated 模型会用到,BGE-M3 是开源的所以留空也没问题。command里的--served-model-name bge-m3是个很实用的参数——它让你在调用接口时可以写一个简短的名字,而不是每次都要写完整的BAAI/bge-m3,客户端代码更干净。最后的shm_size: "16gb"是在 compose 层面解决共享内存问题,比 docker run 的--ipc=host更精细,避免容器共享宿主机全部内存带来的安全风险。

4.3 启动与日志排障:怎么判断服务是否真的“就绪”了

Compose 文件写好后,启动和排障都变得标准化。docker compose up -d以后台模式启动,docker compose ps查看容器状态,docker compose logs -f embedding实时看模型加载日志。这里提醒一句:容器状态变成 Up 不代表服务就绪,因为 vLLM 加载权重需要时间。真正可靠的判断标准是看日志里有没有出现Uvicorn running on http://0.0.0.0:8000这句话,或者直接用上一章的 /health 接口做探测。

# 启动服务 docker compose up -d # 查看容器运行状态 docker compose ps # 实时跟踪日志(若卡住,Ctrl+C 退出跟踪) docker compose logs -f embedding # 验证健康检查 curl http://localhost:8000/health

如果你看到容器反复重启,多半是配置文件有语法错误或 GPU 资源没预留成功。这时先执行docker compose config校验配置,再执行docker logs bge-m3-embedding查看退出的具体原因。常见的情况是 nvidia driver 版本太旧导致 CUDA 初始化失败,或者 HuggingFace 下载权重时网络不通。前者只能升级驱动,后者可以手动把模型权重下载到挂载目录再重新启动。

5. 避坑与排查:本地部署 BGE-M3 最容易翻车的 5 个环节

5.1 报错 “ValueError: The model 'BAAI/bge-m3' is not supported”

这个报错几乎每个新手都会碰上一次,我自己第一次跑的时候也卡在这里。现象是容器启动几秒后直接退出,日志最后一行就是这句话。原因很简单:vLLM 的镜像版本太旧,旧版本没有把这个模型加入支持列表。vLLM 对模型的支持是跟着版本走的,0.4.x 版本跑 BGE-M3 基本都会碰壁,0.6 以上才稳定。解决方法是升级镜像 tag,用docker pull vllm/vllm-openai:latest重新拉取,或者明确指定一个比 0.6 更新的版本号。值得注意的是,即使模型架构受支持,也要确保--task embedding参数存在,否则 vLLM 默认按文本生成任务加载,同样会报类似的错误。

5.2 Docker Desktop 启动失败:virtualisation support wasn't detected

这个报错几乎成了 Windows 用户的第一道坎。现象是安装完 Docker Desktop 点启动,弹窗提示检测不到虚拟化支持,直接退出。原因通常是两种:BIOS 里的 Intel VT-x / AMD-V 没开,或者 Windows 的“虚拟机平台”功能没启用。解决路径是:重启进 BIOS 开启虚拟化 → 在“启用或关闭 Windows 功能”里勾选“虚拟机平台”和“适用于 Linux 的 Windows 子系统” → 重启 → 再启动 Docker Desktop。Windows 11 用户注意,WSL2 是 Docker Desktop 的默认后端,如果 WSL 没装,也要先执行wsl --install。这批步骤做完,99% 的启动失败都能解决,剩下 1% 可能是 Hyper-V 被其他虚拟化软件占用,需要先关掉 VMware 或 VirtualBox。

5.3 提示共享内存不足:vLLM worker 进程崩溃

现象是模型加载成功,但并发请求一上来,API 响应变慢然后容器直接重启,日志里出现 “Bus error” 或 “Shared memory is full” 等字样。原因是 vLLM 的 tokenizer 和数据处理会用到共享内存,而 Docker 容器默认的 /dev/shm 只有 64MB,根本不够用。解决方法是加--ipc=host(docker run 方式)或在 compose 里配shm_size: "16gb"。这一条我在 docker run 的命令里特意写上了,很多教程不讲这一项,导致新手后续踩坑。如果你已经在 compose 里配了 shm_size,但问题依旧,检查一下是不是改了配置后忘了docker compose down && docker compose up -d,因为 compose 只会重新创建变化的容器,有些配置变更需要强制重建。

5.4 模型下载卡住或失败:HuggingFace 连接不稳定

现象是启动日志一直停在 “Downloading model” 或报 SSL 超时错误。原因是模型目录几百 MB 到 2GB 不等,需要从 HuggingFace 下载,网络不稳定时容易中断。解决思路有两个:先给容器挂载宿主机已有的 HuggingFace cache 目录,这样下载过的模型不必重复拉取;再一个是我常用的做法——到 HuggingFace 页面把权重文件手动下载到本地某个目录(比如./models/bge-m3),然后在启动命令里把--model指向这个本地路径。vLLM 支持直接加载本地路径,只要目录结构是完整的模型仓库格式。注意别只下载 safetensors 文件,config.json、tokenizer.json 这些缺一不可,否则会报 “Failed to load model” 的错。

5.5 调用接口时请求报 404 或模型名不匹配

现象是服务起来了、健康检查也过了,但代码里一调/v1/embeddings就返回 404,或者报 “The model 'xxx' does not exist”。原因分两种:一种是你请求路径写错了,vLLM 的 OpenAI 兼容接口是/v1/embeddings,不是/embeddings或/v1/embedding,少个 s 都不行;另一种是请求体里的model字段必须和启动时的模型名一致。如果启动时用的是--served-model-name bge-m3,请求里就要写bge-m3,写BAAI/bge-m3反而会找不到模型。这一点很多新手会绕晕,记住一个原则:接口里 model 字段的值,看的是服务启动时的--served-model-name或--model参数,不是 HuggingFace 的完整路径。

6. 深入一步:用 Python 调通 BGE-M3 的完整检索链路并验证向量质量

6.1 用 OpenAI SDK 改写请求:本地接口与云端 API 无缝切换

服务跑通后,下一步是把它接入真实的业务代码。如果你以前用过 OpenAI 的 Embedding API,这里几乎是零学习成本。只需要把 base_url 指向本地服务,把 api_key 随意填一个占位字符串(本地服务不会校验),然后把 model 名改成你启动时指定的名字。下面这段代码演示了最小可用的调用方式,以及怎么判断返回的向量是否合理。

from openai import OpenAI # 指向本地 vLLM 服务;api_key 本地服务不做校验,可填任意非空字符串 client = OpenAI( base_url="http://localhost:8000/v1", api_key="EMPTY", ) # 发送嵌入请求;input 参数支持字符串或字符串列表 resp = client.embeddings.create( model="bge-m3", input=["北京到上海的机票价格", "今天的天气怎么样"], ) # 解析向量并验证维度 emb1 = resp.data[0].embedding emb2 = resp.data[1].embedding print("向量维度:", len(emb1)) # 期望输出 1024 # 用余弦相似度粗测向量质量:语义相近的句子应该得分更高 import numpy as np def cosine_similarity(a, b): a, b = np.array(a), np.array(b) return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))) print("两个句子的相似度:", cosine_similarity(emb1, emb2))

代码本身很直白,但我强调几个值得注意的细节。resp.data的顺序和输入列表的顺序严格对应,这个顺序在并发请求时可能会乱,所以生产环境建议传入带input和index的结构化数据。另外,BGE-M3 的稠密向量默认没有做归一化,如果你要做余弦相似度检索,要么在存入向量数据库之前归一化,要么在计算相似度时像上面代码这样手动归一化。我踩过的一个坑是:直接拿未归一化的向量去算内积相似度,导致阈值怎么调都不对,后来才反应过来是归一化的问题。

6.2 用文本相似度任务验证嵌入质量:三个测试样本和判断标准

接口通了以后,还得确认模型真的“懂”语义,而不是在输出随机数。我常用的验证方法是准备三组对照句子,分别测试语义相近、语义无关和字面相似但语义不同这三类情况。如果 BGE-M3 工作正常,第一组相似度应该明显高于 0.8,第二组低于 0.4,第三组应该低于第一组——因为字面重复不等于语义相近,这一点恰好是衡量嵌入模型质量的试金石。

测试组句子 A句子 B期望相似度区间
语义相近怎么给手机充电手机电池没电了怎么办0.6 ~ 0.9
语义无关今天晚饭吃什么如何搭建一个网站< 0.4
字面相似但语义不同苹果很好吃苹果发布了新手机0.3 ~ 0.6

跑完这三组如果趋势符合预期,说明模型加载正常、服务稳定,可以放心往下做 RAG 项目。如果语义相近组得分反而低,优先检查是不是输入文本被截断了——BGE-M3 的 max length 是 8192 token,你本地测试用的短句子不应该触发截断;如果启动了量化版本或者改过--max-model-len,再复查一下服务日志里有没有截断警告。这一步做好之后,整个本地嵌入链路就算真正验证闭环了。

6.3 一个值得养成的习惯:把模型权重固定版本,给部署留一颗后悔药

最后一个建议是我自己交了学费换来的教训:vLLM 镜像 tag 和模型权重版本,在最初跑通之后就固定下来,不要随手用latest。因为 vLLM 更新很快,今天能跑的镜像,三个月后新版本可能改了什么默认行为,模型加载方式变了,服务就起不来了。我一般会在 compose 文件里把镜像 pin 到具体版本号,比如vllm/vllm-openai:v0.6.6.post1,同时把--model指向本地固定的模型目录,而不是每次启动都去 HuggingFace 拉最新分支。这样做的直接好处是:半年后你重新拉起这个服务,行为仍然和今天完全一致。这也是我经过多次“昨天还能跑,今天突然报错”的翻车之后才养成的习惯,希望对你也有用。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 13:16:09

12. 利用PY32Studio+HAL库开发UART+DMA通讯

前言在第七章中&#xff0c;我们采用查询和中断的方式进行UART的发送和接收&#xff0c;查询和纯中断方式的弊端如下&#xff1a;1.查询方式&#xff1a;CPU不断轮询UART的状态标志位&#xff08;如TXE, RXNE&#xff09;&#xff0c;效率极低&#xff0c;CPU完全被阻塞&#x…

作者头像 李华
网站建设 2026/10/5 13:16:06

Ubuntu安装Anaconda并配置环境

Ubuntu安装Anaconda并配置环境 在 Ubuntu 上进行 Python 开发&#xff0c;尤其是涉及数据科学、机器学习或科学计算时&#xff0c;Anaconda 是一个值得优先考虑的环境管理工具。它将 Python 解释器、conda 包管理器以及大量常用的科学计算库整合在一起&#xff0c;安装后即可直…

作者头像 李华
网站建设 2026/10/5 13:15:14

HuggingFace镜像配置教程:hf-mirror设置HF_ENDPOINT,ComfyUI模型下载不再超时

你是不是 pip 源配好了,装插件不卡了,结果一加载工作流,报错说 Cannot connect to huggingface.co? 别慌,我也踩过——pip 只管 Python 包,模型下载它管不了。HuggingFace 才是第二道坎。 这篇给你最省事的方案:设一个环境变量,把 HuggingFace 的地址永久指向国内镜像 …

作者头像 李华
网站建设 2026/10/5 13:15:13

HTML笔记——1Day

一、背景知识1. 两位前驱&#xff1a;图灵和冯诺依曼 2. 计算机基础&#xff1a;3. 应用软件&#xff1a;&#xff08;1&#xff09;C/S 结构&#xff1a;需要安装&#xff0c;偶尔更新&#xff0c;不跨平台&#xff08;2&#xff09;B/S 结构&#xff1a;无需安装&#xff0c;…

作者头像 李华
网站建设 2026/10/5 13:07:51

canal做mysql的异步传输工具

文章目录一、前言二、思路三、canal使用前&#xff0c;mysql配置四、详细介绍Kafka模式&#xff08;1&#xff09;启动kafka模式&#xff08;2&#xff09;持久化点位&#xff08;重要&#xff09;五、简单介绍TCP模式&#xff08;1&#xff09;启动tcp模式&#xff08;2&#…

作者头像 李华