这是一个实用工具集合,旨在帮助在 Swift 应用中采用语言模型。它尽可能遵循 Python transformers
API 和抽象,但也致力于提供符合 Swift 习惯的接口,并且不假设用户事先熟悉 transformers
或 tokenizers
。
请查看我们的文章。
Tokenizers
。 用于将文本转换为 token 并返回的实用工具。 遵循 tokenizers
和 transformers.js
中的抽象。 用法示例import Tokenizers
func testTokenizer() async throws {
let tokenizer = try await AutoTokenizer.from(pretrained: "pcuenq/Llama-2-7b-chat-coreml")
let inputIds = tokenizer("Today she took a train to the West")
assert(inputIds == [1, 20628, 1183, 3614, 263, 7945, 304, 278, 3122])
}
但是,通常您不需要自己对输入文本进行 token 化处理 - Generation
代码会处理它。
Hub
。 用于从 Hub 下载配置文件,用于实例化 tokenizers 并了解语言模型特征的实用工具。
Generation
。 文本生成算法。 目前支持贪婪搜索和 top-k 采样。
Models
。 基于 Core ML 包的语言模型抽象。
此包已经过以下自回归语言模型的测试:
目前不支持诸如 T5 和 Flan 之类的编码器-解码器模型。 它们在我们的优先级列表中排名很高。
swift-chat
,一个演示如何使用此包的简单应用程序。exporters
,一个基于 Apple coremltools
的 transformers 模型的 Core ML 转换包。transformers-to-coreml
,一个构建在 exporters
上的无代码 Core ML 转换工具。要将 swift-transformers
与 SwiftPM 结合使用,您可以将其添加到您的 Package.swift
中
dependencies: [
.package(url: "https://github.com/huggingface/swift-transformers", from: "0.1.5")
]
然后,将 Transformers 库作为依赖项添加到您的目标
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(name: "Transformers", package: "swift-transformers")
]
)
]
tokenizers
移植tokenizer_config.json
exporters
– Core ML 转换工具。logits
coremltools
@ main
获取最新修复。 特别是,这个合并的 PR 使使用最新版本的 transformers 变得更容易。Accelerate
中使用新的 top-k
实现。