以qwen为例:
要部署并使用 Qwen 模型并输出它的嵌入(embedding),需要经过几个主要步骤:
- 安装必要的库
- 加载模型
- 处理输入数据
- 获取嵌入(embedding)
本文将使用 Hugging Face 的
transformers
库来完成这些步骤。这是一个非常流行且功能强大的库,用于处理各种预训练语言模型。
1. 安装必要的库
首先,需要安装一些必要的库,包括
transformers
和
torch
。
pip install transformers torch
- 封装模型完整代码
# 导入必要的库
from transformers import AutoTokenizer, AutoModel
import torch
class QwenEmbeddingExtractor:
def __init__(self, model_name: str):
"""
初始化模型和分词器
Args:
model_name (str): 预训练的Qwen模型名称
"""
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModel.from_pretrained(model_name)
def encode_text(self, text: str) -> torch.Tensor:
"""
将输入文本转换为嵌入
Args:
text (str): 输入文本
Returns:
torch.Tensor: 文本对应的嵌入
"""
inputs = self.tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = self.model(**inputs)
embeddings = outputs.last_hidden_state
return embeddings
def encode_texts(self, texts: list) -> torch.Tensor:
"""
将多个输入文本转换为批量嵌入
Args:
texts (list): 输入文本列表
Returns:
torch.Tensor: 文本列表对应的嵌入
"""
inputs = self.tokenizer(texts, return_tensors="pt", padding=True, truncation=True)
with torch.no_grad():
outputs = self.model(**inputs)
embeddings = outputs.last_hidden_state
return embeddings
# 创建 QwenEmbeddingExtractor 实例
model_name = "QwenName/QwenModel" # 替换成实际的模型名称
extractor = QwenEmbeddingExtractor(model_name)
# 单个文本示例
text = "这是一个示例文本,用来生成嵌入。"
embedding = extractor.encode_text(text)
print(embedding)
# 多个文本示例
texts = ["文本1", "文本2", "文本3"]
embeddings = extractor.encode_texts(texts)
print(embeddings)
版权归原作者 frostjsy 所有, 如有侵权,请联系我们删除。