WordLlama:在消費(fèi)級(jí)GPU上奔跑的“瘦子” 原創(chuàng)
David Miller表示該模型的目標(biāo)很明確:彌合尖端 AI 研究和實(shí)際應(yīng)用之間的差距。他認(rèn)識(shí)到,許多現(xiàn)有 NLP模型需要大量的計(jì)算資源,并且通常局限于專有系統(tǒng),從而限制了它們的可訪問(wèn)性。作為回應(yīng),WordLlama被設(shè)計(jì)為既輕量級(jí)又高效,使更廣泛的用戶能夠在不犧牲質(zhì)量的情況下將高性能 NLP 集成到他們的工作流程中。
WordLlama一個(gè)開(kāi)源、快速、輕量級(jí) (16MB) NLP 工具包,它是一種用于NLP和單詞嵌入的實(shí)用型模型,它類似于GloVe、Word2Vec或FastText。它首先從最先進(jìn)的LLM(例如 LLaMA3 70B)中提取Token Embedding的編碼表,并且訓(xùn)練一個(gè)小型的、無(wú)上下文的通用Embedding模型。
它在基準(zhǔn)測(cè)試中優(yōu)于GloVe 300d等流行的單詞模型,同時(shí)大小明顯更小(默認(rèn)模型為16MB vs >2GB)。重要的是它能根據(jù)實(shí)際生產(chǎn)的需要靈活截?cái)郥oken的嵌入維度,有點(diǎn)類似“俄羅斯套娃模式”。最大的模型 (1024維) 可以截?cái)酁?64、128、256 或 512維度使用。
它支持二進(jìn)制嵌入模型以加快計(jì)算速度,在CPU上面也是能夠快速運(yùn)行,WordLlama 非常適合輕量級(jí) NLP 任務(wù),例如訓(xùn)練 sklearn 分類器、執(zhí)行語(yǔ)義匹配、重復(fù)數(shù)據(jù)刪除、排名和聚類。它非常適合創(chuàng)建 LLM 輸出評(píng)估器。因?yàn)樗木o湊設(shè)計(jì),任何人可以在短短幾個(gè)小時(shí)內(nèi)在消費(fèi)類GPU 上訓(xùn)練模型。它的速度和多功能性使其成為探索性分析和各類應(yīng)用的絕佳助手。
上圖WL在64/128/256/512/1024等不同維度在不同任務(wù)上與其他同類的對(duì)比。WordLlama支持多語(yǔ)言,可以跨各種語(yǔ)言進(jìn)行訓(xùn)練和部署。它處理多種語(yǔ)言的能力擴(kuò)大了它在客戶服務(wù)、內(nèi)容生成和許多其他需要多功能語(yǔ)言功能領(lǐng)域的應(yīng)用潛力。下面為它的實(shí)例代碼,輕巧便用。
from wordllama import WordLlama
# 加載默認(rèn)的 WordLlama 模型
wl = WordLlama.load()
# 計(jì)算兩個(gè)句子之間的相似度
similarity_score = wl.similarity("我去了車那里", "我去了當(dāng)鋪")
print(similarity_score) # 輸出: 0.06641249096796882
# 根據(jù)與查詢的相似度對(duì)文檔進(jìn)行排名
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++ 初始化進(jìn)行標(biāo)簽
wl.cluster(docs, k=5, max_iteratinotallow=100, tolerance=1e-4)
# 根據(jù)查詢過(guò)濾候選項(xiàng)
wl.filter(query, candidates, threshold=0.3)
# 根據(jù)查詢返回前k 個(gè)字符串
wl.topk(query, candidates, k=3)
本文轉(zhuǎn)載自 ??魯班模錘??,作者: 龐德公
