该项目旨在FPGA上实现语言模型推理,支持边缘设备和资源有限环境中的AI应用。
- 通用性: 支持常见的FPGA板,如KV260。
- 可扩展性: 源代码用C++编写,便于定制和扩展。
- 轻量级: 考虑到语言模型大小的限制,采用了高效的架构。
构建和运行Swan需要以下工具和库。
- CMake
- g++
- HLS工具(如Vivado HLS)
要克隆Swan仓库,请运行以下命令:
$ git clone git@github.com:turingmotors/swan.git
$ cd swan
从huggingface.co/karpathy/tinyllamas下载15M参数模型:
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin -O model/stories15M.bin
wget https://raw.githubusercontent.com/leloykun/llama2.cpp/master/tokenizer.bin -O model/tokenizer.bin
有关在FPGA环境中构建Swan的详细信息,请参阅技术博客。
$ mkdir -p build && cd build
$ cmake ..
$ make && cd ..
构建完成后,可以用以下命令运行Swan。
$ ./build/swan
Swan支持以下选项。
Usage: ./build/swan [options]
Options:
--weight_path : 权重文件路径
--vocab_path : 词汇表文件路径
--max_seq : 最大序列长度
--temp : 采样温度
--color : 启用彩色输出
--log : 启用日志输出
--help, -h : 显示此帮助信息
该项目参考了llama2.c。
该项目根据Apache License 2.0许可证公开。
欢迎为Swan做出贡献。通过Issue或Pull Request提供反馈和改进建议。 Turing株式会社支持Swan的开发。