这是一个实用工具集合,旨在帮助在 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.jsonexporters – Core ML 转换工具。logitscoremltools @ main 获取最新修复。 特别是,这个合并的 PR 使使用最新版本的 transformers 变得更容易。Accelerate 中使用新的 top-k 实现。