要使用 Hugging Face 上的模型,通常有两种方式:自动方式和手动方式。以 uer/sbert-base-chinese-nli 模型为例,详细解释如何进行这两种方式的模型下载和使用。
1. 自动方式:通过 Hugging Face Hub 自动下载并使用模型
Hugging Face 提供了 transformers 和 sentence-transformers 库,这些库可以自动从 Hugging Face Hub 下载模型,并在本地缓存模型文件,后续可以直接使用这些缓存文件。
步骤一:安装依赖
首先,需要安装必要的 Python 库:
pip install sentence-transformers transformers
步骤二:使用 SentenceTransformer 自动加载模型
在你的项目中,可以使用 SentenceTransformer 直接从 Hugging Face 下载并加载 uer/sbert-base-chinese-nli 模型。模型会被自动下载到本地,之后再次使用时会从本地缓存加载。
from sentence_transformers import SentenceTransformer
# 自动从 Hugging Face 下载并加载模型
model = SentenceTransformer('uer/sbert-base-chinese-nli')
# 向量化文本
query = "查询YS的工单信息"
query_vector = model.encode(query)
# 输出向量
print(query_vector)
注意事项:
- 这段代码会自动访问 Hugging Face 并下载模型。如果本地缓存中已经存在该模型,它会直接从缓存加载,而无需再次下载。
- 模型下载的文件会存储在本地的缓存目录,通常位于
~/.cache/huggingface/transformers/或类似路径。
步骤三:在 FastAPI 中使用自动下载的模型
你可以将此功能集成到 FastAPI 项目中。例如:
from fastapi import FastAPI
from sentence_transformers import SentenceTransformer
app = FastAPI()
# 加载模型
model = SentenceTransformer('uer/sbert-base-chinese-nli')
@app.post("/embed/")
async def embed_query(query: str):
# 将查询向量化
query_vector = model.encode(query)
return {"query": query, "vector": query_vector.tolist()}
2. 手动方式:手动下载模型并离线使用
在无法联网或网络不稳定的环境中,你可以选择手动下载模型文件,并手动加载这些文件。
步骤一:访问 Hugging Face 模型页面
- 打开 uer/sbert-base-chinese-nli 模型页面。
- 下载该页面上的所有文件,包括:
pytorch_model.bin:模型权重文件config.json:模型配置文件tokenizer.json和tokenizer_config.json:分词器文件
步骤二:将模型文件存放在本地
将下载的文件放在你项目的某个文件夹中,例如 ./models/uer-sbert-base-chinese-nli/。
步骤三:使用本地路径加载模型
你可以指定本地路径来加载模型文件,而不是让 SentenceTransformer 自动从 Hugging Face 下载。
from sentence_transformers import SentenceTransformer
# 使用本地路径加载模型
model = SentenceTransformer('./models/uer-sbert-base-chinese-nli')
# 向量化文本
query = "查询YS的工单信息"
query_vector = model.encode(query)
# 输出向量
print(query_vector)
手动方式的优势:
- 适用于不能访问互联网或访问 Hugging Face 服务器不稳定的环境。
- 一次下载后可以在不同的系统或机器之间手动传输模型文件。
步骤四:在 FastAPI 中使用手动下载的模型
from fastapi import FastAPI
from sentence_transformers import SentenceTransformer
app = FastAPI()
# 使用本地路径加载模型
model = SentenceTransformer('./models/uer-sbert-base-chinese-nli')
@app.post("/embed/")
async def embed_query(query: str):
# 将查询向量化
query_vector = model.encode(query)
return {"query": query, "vector": query_vector.tolist()}
3. 总结:自动和手动方式的区别
自动方式
- 优点:
- 方便快捷,模型会自动下载并缓存。
- 只需提供模型名称,库会自动从 Hugging Face 获取模型。
- 缺点:
- 依赖于稳定的网络连接,无法离线使用。
- 在多台机器上使用时,需要每台机器都能访问 Hugging Face。
手动方式
- 优点:
- 可以在无网络连接的环境中使用。
- 模型文件可以在多台机器间共享,避免重复下载。
- 缺点:
- 需要手动管理模型文件,下载和加载相对麻烦。
根据你的使用环境和需求,选择自动或手动的方式。如果在网络环境稳定的情况下,自动方式更为简便。如果需要在离线或网络受限的环境中使用,手动下载并管理模型则是更好的选择。
1493

被折叠的 条评论
为什么被折叠?



