SHARK

SHARK

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

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

SHARKTurbineStable Diffusiontorch-mlirVulkanGithub开源项目

SHARK

高性能机器学习发行版

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

Nightly Release Validate torch-models on Shark Runtime

<details> <summary>先决条件 - 驱动程序</summary>

安装您的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

</details>

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

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

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

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

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

享受吧。

<details> <summary>更多安装说明</summary> * 我们建议您每次下载新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并等待片刻或关闭终端。
</details> <details> <summary>高级安装(仅限开发人员)</summary>

开发人员的高级安装(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

<img width="1607" alt="webui" src="https://yellow-cdn.veclightyear.com/2b54e442/5923e51a-d4a3-4923-aeeb-4c01620ffeb2.png">

在您的设备上运行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等来指定设备。

</details>

在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服务器上找到我们。

<details> <summary>二进制安装</summary>

设置新的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)。

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多