大模型Embedding和数据不兼容问题

不同的大模型(如Qwen和DeepSeek)在Embedding和模型数据上确实存在差异。

Embedding 的差异

  • 不同模型,不同Embedding:
    Qwen和DeepSeek的Embedding(文本的向量表示)是通过各自独立的训练过程生成的,受模型架构、训练数据、目标函数等因素影响。即使输入相同的文本,两者的Embedding向量也会不同。
    • 维度差异:模型的Embedding维度(如1024维、2048维)可能不同。
    • 语义空间差异:不同模型的向量空间未对齐,直接比较它们的Embedding没有意义(需额外校准)。
  • 是否可共用?
    不能直接共用。例如:
    • 如果用Qwen的Embedding训练下游任务(如分类器),换到DeepSeek的Embedding时需重新训练。
    • 跨模型的Embedding检索(如向量数据库)需确保所有向量来自同一模型。

模型数据的隔离

  • 参数不共享:
    Qwen和DeepSeek的模型权重(参数)是独立训练的,结构可能也不同(如层数、注意力机制设计),因此模型内部数据无法直接共用。
    • 例如:不能将Qwen的权重加载到DeepSeek中运行。
  • 微调数据的兼容性:
    如果对模型做微调(Fine-tuning),适配Qwen的数据(如LoRA适配器)通常不能直接用于DeepSeek,除非两者结构完全相同(但这种情况罕见)。

如何跨模型协作?

若需结合不同模型的能力,可通过以下方式:

  1. 统一接口调用:
    将Qwen和DeepSeek作为独立服务,通过API协调它们的输入/输出(如用Qwen生成文本,用DeepSeek做向量化)。
  2. 数据格式转换:
    对Embedding进行跨模型对齐(如通过线性投影[1]),但需要额外训练校准层。
  3. 标准化工具库:
    使用Sentence-Transformers等库统一Embedding模型(例如都切换为text-embedding-3-large),但会失去原模型特性。

引出大模型分词器AutoTokenizer

AutoTokenizer.from_pretrained(pretrained_model_name_or_path, trust_remote_code=True) 是 Hugging Face transformers 库中用于加载大模型(如 Qwen、DeepSeek、LLaMA 等)的分词器(Tokenizer)的核心方法。

  1. 核心作用
  • 自动选择并加载匹配的分词器
    根据 model_id(模型名称或本地路径),自动下载或加载对应的分词器,无需手动指定分词器类。例如:
    • model_id=“Qwen/Qwen-7B” → 自动加载 Qwen 的分词器。
    • model_id=“deepseek-ai/deepseek-llm-7b” → 加载 DeepSeek 的分词器。
  • 处理模型特定的分词逻辑
    不同模型的预处理(如特殊标记、分词规则)可能不同(例如 GPT 的 BPE、BERT 的 WordPiece)。该方法能正确适配这些差异。
from transformers import AutoTokenizer

# 加载分词器(从Hub下载或读取本地缓存)
tokenizer = AutoTokenizer.from_pretrained(
    r"E:\soft\model\qwen\Qwen\Qwen2___5-0___5B-Instruct", #Qwen的分词器目前和deepseek是不一样的。
    trust_remote_code=True  # 允许运行远程代码以支持自定义分词器 
)

# 使用分词器处理文本
text = "你好,DeepSeek!"
inputs = tokenizer(text, return_tensors="pt")  # 返回PyTorch张量
print(inputs)
# 输出示例:{'input_ids': tensor([[ 101, 2345,  102]]), 'attention_mask': tensor([[1, 1, 1]])}

分词器作用:后面微调,训练数据集使用。

# 5. 训练
def train():
    dataset = load_data()
    tokenized_data = preprocess_data(tokenizer, dataset)
    # 数据校对器(关键修改)
    data_collator = DataCollatorForLanguageModeling(
        tokenizer=tokenizer,
        mlm=False,
        pad_to_multiple_of=8
    )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java_leaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值