WordLlama:在消费级GPU上奔跑的“瘦子” 原创

发布于 2024-9-20 10:57
浏览
0收藏


David Miller表示该模型的目标很明确:弥合尖端 AI 研究和实际应用之间的差距。他认识到,许多现有 NLP模型需要大量的计算资源,并且通常局限于专有系统,从而限制了它们的可访问性。作为回应,WordLlama被设计为既轻量级又高效,使更广泛的用户能够在不牺牲质量的情况下将高性能 NLP 集成到他们的工作流程中。

WordLlama一个开源、快速、轻量级 (16MB) NLP 工具包,它是一种用于NLP和单词嵌入的实用型模型,它类似于GloVe、Word2Vec或FastText。它首先从最先进的LLM(例如 LLaMA3 70B)中提取Token Embedding的编码表,并且训练一个小型的、无上下文的通用Embedding模型。

它在基准测试中优于GloVe 300d等流行的单词模型,同时大小明显更小(默认模型为16MB vs >2GB)。重要的是它能根据实际生产的需要灵活截断Token的嵌入维度,有点类似“俄罗斯套娃模式”。最大的模型 (1024维) 可以截断为 64、128、256 或 512维度使用。

它支持二进制嵌入模型以加快计算速度,在CPU上面也是能够快速运行,WordLlama 非常适合轻量级 NLP 任务,例如训练 sklearn 分类器、执行语义匹配、重复数据删除、排名和聚类。它非常适合创建 LLM 输出评估器。因为它的紧凑设计,任何人可以在短短几个小时内在消费类GPU 上训练模型。它的速度和多功能性使其成为探索性分析和各类应用的绝佳助手。


WordLlama:在消费级GPU上奔跑的“瘦子”-AI.x社区

上图WL在64/128/256/512/1024等不同维度在不同任务上与其他同类的对比。WordLlama支持多语言,可以跨各种语言进行训练和部署。它处理多种语言的能力扩大了它在客户服务、内容生成和许多其他需要多功能语言功能领域的应用潜力。下面为它的实例代码,轻巧便用。


from wordllama import WordLlama


# 加载默认的 WordLlama 模型
wl = WordLlama.load()


# 计算两个句子之间的相似度
similarity_score = wl.similarity("我去了车那里", "我去了当铺")
print(similarity_score)  # 输出: 0.06641249096796882


# 根据与查询的相似度对文档进行排名
query = "我去了车那里"
candidates = ["我去了公园", "我去了商店", "我去了卡车", "我去了车辆"]
ranked_docs = wl.rank(query, candidates)
print(ranked_docs)
# 输出:
# [
#   ('我去了车辆', 0.7441646856486314),
#   ('我去了卡车', 0.2832691551894259),
#   ('我去了商店', 0.19732814982305436),
#   ('我去了公园', 0.15101404519322253)
# ]


# 其他推理方法
# 模糊去重
wl.deduplicate(candidates, threshold=0.8)
# 使用 kmeans/kmeans++ 初始化进行标签
wl.cluster(docs, k=5, max_iteratinotallow=100, tolerance=1e-4) 
# 根据查询过滤候选项
wl.filter(query, candidates, threshold=0.3) 
# 根据查询返回前k 个字符串
wl.topk(query, candidates, k=3)

本文转载自 鲁班模锤​,作者: 庞德公

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐