當前位置:
首頁 > 知識 > 快速訪問4GB詞典向量:LMDB 嵌套

快速訪問4GB詞典向量:LMDB 嵌套

快速訪問4GB詞典向量:LMDB 嵌套

通過 Lightning Memory-Mapped Database 可以快速查詢單詞向量(嵌套), 查詢時間開銷會非常小, 並且內存使用量遠低於gensim或其他等效解決方案.

受 Delft 的啟發. 如同他們在自述文件中所說, 這個方法可以讓我們提前訓練的嵌套立刻"溫熱"(沒有載入時間)起來, 讓我們得以釋放內存, 以及在使用 SSD 運行時, 使用任意數目的嵌套而產生的影響卻可以忽略不計.

例如, 在傳統方法中, glove-840B要花2分鐘來載入, 並需要 4GB 的緩存. 使用 LMDB 管理後,glove-840B可以立即被訪問, 而且只使用了幾兆的內存, 並且運行時的影響可以忽略(大概慢了1%).

讀向量

快速訪問4GB詞典向量:LMDB 嵌套

寫向量

一個從 gensim 模型寫 LMDB 向量文件的例子. 如果你有另一種格式的向量, 只要產生單詞和向量對的迭代器被支持, 那麼只需要適當改變下面的 iter_embeddings方法即可.

我將會寫一個 CLI 介面來快速轉化標準格式.

快速訪問4GB詞典向量:LMDB 嵌套

運行測試

pytest

定製化

LMDB 嵌套默認使用 pickle 來序列化向量(可使用最高應用協議來進行優化和pickled). 然而, 也很容易換為其他方式如 msgpack. 只需要將序列化和反序列化作為回調注入到 LmdbEmbeddingsWriterLmdbEmbeddingsReader中即可.


英文原文:https://github.com/ThoughtRiver/lmdb-embeddings
譯者:郭明

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

智領雲華中區Mesos技術專題分享會
Vim 8.1發布:支持在 Vim 窗口中運行終端

TAG:Python部落 |