Swift + Transformers

Unit Tests

swift-transformers 是一个实用工具集合,旨在帮助在 Swift 应用程序中采用语言模型。

它尽可能遵循 Python transformers 的 API 和抽象概念,但同时也致力于提供符合 Swift 语言习惯的接口,并且不假定用户事先熟悉 transformerstokenizers

原理和概述

请查看 我们的发布公告

模块

import Tokenizers
func testTokenizer() async throws {
    let tokenizer = try await AutoTokenizer.from(pretrained: "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B")
    let messages = [["role": "user", "content": "Describe the Swift programming language."]]
    let encoded = try tokenizer.applyChatTemplate(messages: messages)
    let decoded = tokenizer.decode(tokens: encoded)
}
import Hub
func testHub() async throws {
    let repo = Hub.Repo(id: "mlx-community/Qwen2.5-0.5B-Instruct-2bit-mlx")
    let filesToDownload = ["config.json", "*.safetensors"]
    let modelDirectory: URL = try await Hub.snapshot(
        from: repo,
        matching: filesToDownload,
        progressHandler: { progress in
            print("Download progress: \(progress.fractionCompleted * 100)%")
        }
    )
    print("Files downloaded to: \(modelDirectory.path)")
}

通过 SwiftPM 使用

要将 swift-transformers 与 SwiftPM 一起使用,您可以将其添加到您的 Package.swift 文件中

dependencies: [
    .package(url: "https://github.com/huggingface/swift-transformers", from: "0.1.17")
]

然后,将 Transformers 库作为依赖项添加到您的目标中

targets: [
    .target(
        name: "YourTargetName",
        dependencies: [
            .product(name: "Transformers", package: "swift-transformers")
        ]
    )
]

使用 swift-transformers 的项目 ❤️

在您的项目中使用 swift-transformers 吗?请告诉我们,我们会将您添加到列表中!

支持的模型

您可以使用 swift-transformers 在 Core ML 模型上运行推理。 请注意,使用 TokenizersHub 模块不需要 Core ML。

此软件包已经过自回归语言模型的测试,例如

目前不支持编码器-解码器模型,如 T5 和 Flan。

其他工具

贡献

Swift Transformers 是一个社区项目,我们欢迎贡献。 如果您正在寻找一个入门的地方,请查看标记为 good first issueIssues

请确保您的代码在提交拉取请求之前通过构建和测试套件。您可以使用 swift test 运行测试。

许可

Apache 2.