Project Icon

SHARK

跨平台机器学习分发解决方案

SHARK是一个高性能的机器学习分发平台,支持Windows、Linux和macOS,兼容AMD和Nvidia硬件,优化图像和文本生成的效率和稳定性。利用最新的Turbine技术,促进更快速的模型部署和稳定性能体验。详细指南帮助初学者和开发者快速上手,支持稳定扩散、BERT、GPT2等热门模型。

SHARK

高性能机器学习发行版

我们目前正在重建SHARK,以利用Turbine。在此完成之前,请确保您使用.exe版本或SHARK-1.0分支的代码,以获得正常工作的SHARK。

Nightly Release Validate torch-models on Shark Runtime

先决条件 - 驱动程序

安装您的Windows硬件驱动程序

  • [AMD RDNA用户] 在这里下载最新驱动程序(支持的最旧版本为23.2.1)。
  • [macOS用户] 在这里下载并安装1.3.216版本的Vulkan SDK。较新的SDK版本将无法正常工作。
  • [Nvidia用户] 在这里下载并安装最新的CUDA / Vulkan驱动程序。

Linux驱动程序

  • MESA / RADV驱动程序不支持FP16。请使用最新的AMGPU-PRO驱动程序(非专业版的开源驱动程序也无法正常工作)或最新的NVidia Linux驱动程序。

其他用户请确保您已从这里获取了最新的供应商驱动程序和Vulkan SDK,如果您正在使用Vulkan,请确保在终端窗口中运行vulkaninfo

Windows 10/11用户的SHARK Stable Diffusion快速入门

从上面的(先决条件)[https://github.com/nod-ai/SHARK#install-your-hardware-drivers]链接安装驱动程序。

下载稳定版本或最新的SHARK 1.0预发布版本

双击.exe文件,或从命令行运行(推荐),您应该可以在浏览器中访问UI

如果您有自定义模型,请将它们放在.exe所在目录下的models/文件夹中。

享受吧。

更多安装说明 * 我们建议您每次下载新EXE版本时都将其下载到新文件夹中。如果您将其下载到与先前安装相同的文件夹中,您必须删除旧的`*.vmfb`文件,命令为`rm *.vmfb`。您也可以使用`--clear_all`标志一次性清除所有旧文件。 * 如果您最近更新了驱动程序或此二进制文件(EXE文件),建议您使用`--clear_all`清除所有本地缓存。

运行

  • 打开命令提示符或Powershell终端,切换目录(cd)到.exe文件所在的文件夹。然后从命令提示符运行EXE。这样,如果发生错误,您可以复制并粘贴它来寻求帮助。(如果它始终无错误地运行,您也可以直接双击EXE)
  • 第一次运行可能需要几分钟时间,因为模型需要下载并编译。感谢您的耐心等待。下载大约为5GB。
  • 您可能会看到Windows Defender消息,要求您授予打开Web服务器端口的权限。请接受。
  • 打开浏览器访问Stable Diffusion Web服务器。默认情况下,端口是8080,因此您可以访问http://localhost:8080/。
  • 如果您更喜欢始终在浏览器中运行,请在运行EXE时使用--ui=web命令参数。

停止

  • 选择正在运行EXE的命令提示符。按CTRL-C并等待片刻或关闭终端。
高级安装(仅限开发人员)

开发人员的高级安装(Windows、Linux和macOS)

Windows 10/11用户

  • 如果您尚未安装,请从这里安装Git for Windows。

检出代码

git clone https://github.com/nod-ai/SHARK.git
cd SHARK

切换到正确的分支(重要!)

目前,SHARK正在main分支上为Turbine进行重建。当前强烈建议您不要使用main分支,除非您正在参与重建工作,否则不应期望该分支上的代码能生成用于图像生成的可工作应用程序。因此,目前您需要切换到SHARK-1.0分支并使用稳定代码。

git checkout SHARK-1.0

以下设置说明假设您在此分支上。

设置Python虚拟环境及依赖项

Windows 10/11用户

  • 这里安装最新的Python 3.11.x版本。

允许安装脚本在Powershell中运行

set-executionpolicy remotesigned

设置venv并安装必要的包(torch-mlir, nodLabs/Shark, ...)

./setup_venv.ps1 #您可以重新运行此脚本以获取最新版本

Linux / macOS用户

./setup_venv.sh
source shark1.venv/bin/activate

在您的设备上运行Stable Diffusion - WebUI

Windows 10/11用户

(shark1.venv) PS C:\g\shark> cd .\apps\stable_diffusion\web\
(shark1.venv) PS C:\g\shark\apps\stable_diffusion\web> python .\index.py

Linux / macOS用户

(shark1.venv) > cd apps/stable_diffusion/web
(shark1.venv) > python index.py

访问 http://localhost:8080/?__theme=dark 上的Stable Diffusion

webui

在您的设备上运行Stable Diffusion - 命令行

Windows 10/11用户

(shark1.venv) PS C:\g\shark> python .\apps\stable_diffusion\scripts\main.py --app="txt2img" --precision="fp16" --prompt="tajmahal, snow, sunflowers, oil on canvas" --device="vulkan"

Linux / macOS用户

python3.11 apps/stable_diffusion/scripts/main.py --app=txt2img --precision=fp16 --device=vulkan --prompt="tajmahal, oil on canvas, sunflowers, 4k, uhd"

您可以将vulkan替换为cpu以在CPU上运行,或替换为cuda以在CUDA设备上运行。如果您有多个vulkan设备,可以使用--device=vulkan://1等来指定设备。

在AMD 7900XTX上的输出可能如下所示:

每步平均时间:47.19188690185547毫秒/次
Clip推理时间(毫秒):109.531
VAE推理时间(毫秒):78.590

图像生成总时间:2.5788655281066895秒

以下是生成的一些示例:

tajmahal, snow, sunflowers, oil on canvas_0

a photo of a crab playing a trumpet

如果您在运行它时遇到任何问题,请在SHARK Discord服务器上找到我们。

二进制安装

设置新的pip虚拟环境

此步骤为Python设置一个新的VirtualEnv

python --version #检查您是否在Linux、macOS或Windows Powershell上
要生成单个调度的基准测试,可以在pytest命令行参数中添加`--dispatch_benchmarks=All --dispatch_benchmarks_dir=<output_dir>`。

如果您只想编译特定的调度,可以用空格分隔的字符串指定它们,而不是使用`"All"`。例如:`--dispatch_benchmarks="0 1 2 10"`。

例如,要为CUDA上的MiniLM生成和运行调度基准测试:

pytest -k "MiniLM and torch and static and cuda" --benchmark_dispatches=All -s --dispatch_benchmarks_dir=./my_dispatch_benchmarks


给定的命令将会在`<dispatch_benchmarks_dir>/<model_name>/`下生成一个`ordered_dispatches.txt`文件,列出并排序调度及其延迟时间,并为每个调度生成包含.mlir、.vmfb以及该调度基准测试结果的文件夹。

如果您想将其合并到Python脚本中,可以在初始化`SharkInference`时传递`dispatch_benchmarks`和`dispatch_benchmarks_dir`命令,基准测试将在编译时生成。例如:

shark_module = SharkInference( mlir_model, device=args.device, mlir_dialect="tm_tensor", dispatch_benchmarks="all", dispatch_benchmarks_dir="results" )


输出将包括:
- 一个名为`ordered-dispatches.txt`的有序列表,列出所有调度及其运行时间。
- 在指定的目录中,将为每个调度创建一个目录(所有调度都会生成mlir文件,但仅为指定的调度生成已编译的二进制文件和基准测试数据)。
- 一个包含调度基准测试的.mlir文件。
- 一个包含调度基准测试的已编译.vmfb文件。
- 一个仅包含hal可执行文件的.mlir文件。
- 一个hal可执行文件的已编译.vmfb文件。
- 一个包含基准测试输出的.txt文件。

有关如何从SHARK tank运行模型测试和基准测试的更多说明,请参阅tank/README.md。

</details>

<details>
  <summary>API 参考</summary>

### Shark Inference API

from shark.shark_importer import SharkImporter

SharkImporter从torch、tensorflow或tf-lite模块导入mlir文件。

mlir_importer = SharkImporter( torch_module, (input), frontend="torch", #tf, #tf-lite ) torch_mlir, func_name = mlir_importer.import_mlir(tracing_required=True)

SharkInference接收linalg、mhlo和tosa方言的mlir。

from shark.shark_inference import SharkInference shark_module = SharkInference(torch_mlir, device="cpu", mlir_dialect="linalg") shark_module.compile() result = shark_module.forward((input))



### 运行MHLO IR的示例。

from shark.shark_inference import SharkInference import numpy as np

mhlo_ir = r"""builtin.module { func.func @forward(%arg0: tensor<1x4xf32>, %arg1: tensor<4x1xf32>) -> tensor<4x4xf32> { %0 = chlo.broadcast_add %arg0, %arg1 : (tensor<1x4xf32>, tensor<4x1xf32>) -> tensor<4x4xf32> %1 = "mhlo.abs"(%0) : (tensor<4x4xf32>) -> tensor<4x4xf32> return %1 : tensor<4x4xf32> } }"""

arg0 = np.ones((1, 4)).astype(np.float32) arg1 = np.ones((4, 1)).astype(np.float32) shark_module = SharkInference(mhlo_ir, device="cpu", mlir_dialect="mhlo") shark_module.compile() result = shark_module.forward((arg0, arg1))

</details>

## 使用REST API的示例

* [设置SHARK以在Blender中使用](./docs/shark_sd_blender.md)
* [设置SHARK以在Koboldcpp中使用](./docs/shark_sd_koboldcpp.md)

## 支持和验证的模型

SHARK持续支持最新的机器学习模型创新:

| TF HuggingFace模型 | SHARK-CPU | SHARK-CUDA | SHARK-METAL |
|---------------------|----------|----------|-------------|
| BERT                | :green_heart:         | :green_heart:         | :green_heart:            |
| DistilBERT         | :green_heart:         | :green_heart:         | :green_heart:            |
| GPT2         | :green_heart:         | :green_heart:         | :green_heart:            |
| BLOOM         | :green_heart:         | :green_heart:         | :green_heart:            |
| Stable Diffusion         | :green_heart:         | :green_heart:         | :green_heart:            |
| Vision Transformer       | :green_heart:         | :green_heart:         | :green_heart:            |
| ResNet50         | :green_heart:         | :green_heart:         | :green_heart:            |

有关SHARK支持的完整模型列表,请参阅[tank/README.md](https://github.com/nod-ai/SHARK/blob/main/tank/README.md)。

## 沟通渠道

*   [SHARK Discord服务器](https://discord.gg/RUqY2h2s9u):与SHARK团队和其他用户进行实时讨论
*   [GitHub问题](https://github.com/nod-ai/SHARK/issues):功能请求、bug等

## 相关项目

<details>
  <summary>IREE项目渠道</summary>

*   [上游IREE问题](https://github.com/google/iree/issues):功能请求、bug和其他工作跟踪
*   [上游IREE Discord服务器](https://discord.gg/wEWh6Z9nMU):与核心团队和合作者进行日常开发讨论
*   [iree-discuss邮件列表](https://groups.google.com/forum/#!forum/iree-discuss):公告、一般和低优先级讨论
</details>

<details>
  <summary>MLIR和Torch-MLIR项目渠道</summary>

* LLVM [Discord](https://discord.gg/xS7Z362)上的`#torch-mlir`频道 - 这是最活跃的沟通渠道
* Torch-MLIR GitHub问题[在此](https://github.com/llvm/torch-mlir/issues)
* LLVM Discourse的[`torch-mlir`部分](https://llvm.discourse.group/c/projects-that-want-to-become-official-llvm-projects/torch-mlir/41)
* 每周一上午9点PST的例会。有关更多信息,请参阅[此处](https://discourse.llvm.org/t/community-meeting-developer-hour-refactoring-recurring-meetings/62575)。
* LLVM Discourse中的[MLIR话题](https://llvm.discourse.group/c/llvm-project/mlir/31)。SHARK和IREE由[MLIR](https://mlir.llvm.org)支持并严重依赖其功能。
</details>

## 许可协议

nod.ai SHARK根据Apache 2.0许可协议和LLVM例外条款进行许可。有关更多信息,请参阅[LICENSE](LICENSE)。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号