用于运行 GPU/WebGPU 上传播模型的 slivers.js 库
此处见演示 https://islamov.ai/stable-diffusion-webgpu/ 页面存档备份,存于互联网档案馆
安装
npm i @aislamov/diffusers.js
使用量
浏览器(见示例/反应)
import { DiffusionPipeline } from '@aislamov/diffusers.js'
const pipe = DiffusionPipeline.fromPretrained('aislamov/stable-diffusion-2-1-base-onnx')
const images = pipe.run({
prompt: "an astronaut running a horse",
numInferenceSteps: 30,
})
const canvas = document.getElementById('canvas')
const data = await images[0].toImageData({ tensorLayout: 'NCWH', format: 'RGB' });
canvas.getContext('2d').putImageData(data, 0, 0);
节点.js(见实例/节点)
import { DiffusionPipeline } from '@aislamov/diffusers.js'
import { PNG } from 'pngjs'
const pipe = DiffusionPipeline.fromPretrained('aislamov/stable-diffusion-2-1-base-onnx')
const images = pipe.run({
prompt: "an astronaut running a horse",
numInferenceSteps: 30,
})
const data = await images[0].mul(255).round().clipByValue(0, 255).transpose(0, 2, 3, 1)
const p = new PNG({ width: 512, height: 512, inputColorType: 2 })
p.data = Buffer.from(data.data)
p.pack().pipe(fs.createWriteStream('output.png')).on('finish', () => {
console.log('Image saved as output.png');
})
'aislamov/stable-diffusion-2-1-base-onnx'模型被优化为GPU,在没有CUDA/DML/WebGPU支持的情况下将无法加载. 请在没有GPU的机器上使用"cpu"修订版 .
const pipe = DiffusionPipeline.fromPretrained('aislamov/stable-diffusion-2-1-base-onnx', { revision: 'cpu' })
运行中的例子
浏览器/反应
npm install && npm run build
cd examples/react && npm install
npm run start
节点
npm install && npm run build
cd examples/node && npm install
node src/txt2img.mjs --prompt "a dog" --rev cpu