16个版本 (8个破坏性)

0.14.1 2021年12月17日
0.13.1 2021年11月26日
0.13.0 2021年7月21日
0.12.0 2020年8月18日
0.5.1 2019年3月24日

#522 in 机器学习

每月49次下载

MIT/Apache

355KB
8K SLoC

Travis CI

finalfusion-utils

简介

finalfusion-utils 是一个Rust包,提供各种处理和查询嵌入的功能。 finalfusion-utils 支持不同格式之间的转换、嵌入矩阵的量化、相似性和类比查询以及类比数据集的评估。

安装

预编译的二进制文件

以下预编译的二进制文件可以在 发布页面 找到

  • x86_64-unknown-linux-gnu-mkl:glibc Linux构建,静态链接到Intel MKL。这是Intel(非AMD)CPU推荐的构建。
  • x86_64-unknown-linux-musl:使用MUSL C库的静态Linux构建。这个二进制文件不链接到BLAS/LAPACK实现,因此不支持优化的产品量化。
  • universal-macos:动态macOS构建。支持x86_64和ARM64架构。链接到Accelerate框架以使用BLAS/LAPACK。

使用 cargo

finalfusion-utils 可以使用最新的Rust工具链进行安装,该工具链可以通过 rustup 进行安装。

使用有效的Rust工具链,通过 cargo 安装crate最为简单

$ cargo install finalfusion-utils

通常,您将想要启用对BLAS/LAPACK库的支持以加快矩阵乘法并启用优化的产品量化支持。为了做到这一点,运行

$ cargo install finalfusion-utils --features implementation

其中 implementation 是以下之一

  • accelerate:macOS Accelerate框架。
  • intel-mkl:Intel MKL(已下载并静态链接)。
  • intel-mkl-amd:Intel MKL,预期预装MKL库,覆盖AMD CPU的CPU检测。
  • netlib:任何兼容的系统BLAS/LAPACK实现。
  • openblas:系统安装的OpenBLAS。除非系统OpenBLAS库是单线程构建且带有锁定,否则不建议使用此选项。否则,OpenBLAS的线程与应用程序线程交互不良。

从源码构建

finalfusion-utils也可以从源码构建,在克隆此仓库后,在目录中执行以下命令以找到target/release/finalfusion下的可执行文件。

$ cargo build --release

使用方法

finalfusion-utils作为一个单独的二进制文件构建,不同的功能通过子命令调用。

转换嵌入向量

# Convert embeddings in fastText format to finalfusion
$ finalfusion convert -f fasttext -t finalfusion \
    embeddings.bin embeddings.fifu

# Convert embeddings in word2vec format to finalfusion
$ finalfusion convert -f word2vec -t finalfusion \
    embeddings.w2v embeddings.fifu

# Print help with all supported combinations:
$ finalfusion convert --help

量化嵌入矩阵

# Quantize embeddings in finalfusion format with a
# single attempt through product quantization 
$ finalfusion quantize -f finalfusion -q pq  -a 1 \
    embeddings.pq

类比和相似度查询

# Get the 15 nearest neighbours of "Tübingen" for
# embeddings in finalfusion format.
$ finalfusion similar -f finalfusion -k 15 \
    embeddings.fifu

# Get the 5 best answers for the analogy query
# "Berlin" is to "Deutschland" as "Amsterdam" to:
$ finalfusion analogy -f finalfusion -k 5 \
    Berlin Deutschland Amsterdam embeddings.fifu

在类比数据集上评估

# Evaluate embeddings on some analogy dataset
$ finalfusion compute-accuracy embeddings.fifu \
    analogies.txt

导出元数据

# Dump optionally stored metadata and store in
# metadata.txt, only supported for finalfusion
# format
$ finalfusion metadata embeddings.fifu \
    > metadata.txt

将Bucket词汇转换为显式词汇

# Converts a hash-bucket based subword vocab to
# one with explicitly stored n-grams.
$ finalfusion bucket-to-explicit buckets.fifu \
    explicit.fifu 

打印完成脚本

# Print completion script for zsh
$ finalfusion completions zsh

依赖关系

~9–38MB
~477K SLoC