mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-08-10 14:16:50 +00:00
Compare commits
2 Commits
ea4e566ccf
...
5e4e03c8dd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e4e03c8dd | ||
|
|
2961182365 |
@ -123,7 +123,7 @@ API and command-line option may change frequently.***
|
|||||||
- Stable Diffusion v1.5 from https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5
|
- Stable Diffusion v1.5 from https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -L -O https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
|
curl -L -O https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
|
||||||
```
|
```
|
||||||
|
|
||||||
### Generate an image with just one command
|
### Generate an image with just one command
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
- download original weights(.ckpt or .safetensors). For example
|
- download original weights(.ckpt or .safetensors). For example
|
||||||
- Stable Diffusion v1.4 from https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
|
- Stable Diffusion v1.4 from https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
|
||||||
- Stable Diffusion v1.5 from https://huggingface.co/runwayml/stable-diffusion-v1-5
|
- Stable Diffusion v1.5 from https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5
|
||||||
- Stable Diffuison v2.1 from https://huggingface.co/stabilityai/stable-diffusion-2-1
|
- Stable Diffuison v2.1 from https://huggingface.co/Manojb/stable-diffusion-2-1-base
|
||||||
- Stable Diffusion 3 2B from https://huggingface.co/stabilityai/stable-diffusion-3-medium
|
- Stable Diffusion 3 2B from https://huggingface.co/stabilityai/stable-diffusion-3-medium
|
||||||
|
|
||||||
### txt2img example
|
### txt2img example
|
||||||
|
|||||||
@ -3309,7 +3309,7 @@ public:
|
|||||||
|
|
||||||
class Identity : public UnaryBlock {
|
class Identity : public UnaryBlock {
|
||||||
public:
|
public:
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -3368,7 +3368,7 @@ public:
|
|||||||
force_prec_f32 = force_prec_f32_;
|
force_prec_f32 = force_prec_f32_;
|
||||||
}
|
}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
ggml_tensor* b = nullptr;
|
ggml_tensor* b = nullptr;
|
||||||
if (bias) {
|
if (bias) {
|
||||||
@ -3422,7 +3422,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx,
|
ggml_tensor* forward(GGMLRunnerContext* ctx,
|
||||||
ggml_tensor* input_ids) {
|
ggml_tensor* input_ids) override {
|
||||||
// input_ids: [N, n_token]
|
// input_ids: [N, n_token]
|
||||||
auto weight = params["weight"];
|
auto weight = params["weight"];
|
||||||
|
|
||||||
@ -3482,11 +3482,11 @@ public:
|
|||||||
scale = scale_value;
|
scale = scale_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_desc() {
|
std::string get_desc() override {
|
||||||
return "Conv2d";
|
return "Conv2d";
|
||||||
}
|
}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
ggml_tensor* b = nullptr;
|
ggml_tensor* b = nullptr;
|
||||||
if (bias) {
|
if (bias) {
|
||||||
@ -3569,11 +3569,11 @@ public:
|
|||||||
scale = scale_value;
|
scale = scale_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_desc() {
|
std::string get_desc() override {
|
||||||
return "Conv2d_grouped";
|
return "Conv2d_grouped";
|
||||||
}
|
}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
ggml_tensor* b = nullptr;
|
ggml_tensor* b = nullptr;
|
||||||
if (bias) {
|
if (bias) {
|
||||||
@ -3725,7 +3725,7 @@ public:
|
|||||||
bias(bias),
|
bias(bias),
|
||||||
force_prec_f32(force_prec_f32) {}
|
force_prec_f32(force_prec_f32) {}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
ggml_tensor* b = nullptr;
|
ggml_tensor* b = nullptr;
|
||||||
if (ctx->weight_adapter) {
|
if (ctx->weight_adapter) {
|
||||||
@ -3778,7 +3778,7 @@ public:
|
|||||||
elementwise_affine(elementwise_affine),
|
elementwise_affine(elementwise_affine),
|
||||||
bias(bias) {}
|
bias(bias) {}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = nullptr;
|
ggml_tensor* w = nullptr;
|
||||||
ggml_tensor* b = nullptr;
|
ggml_tensor* b = nullptr;
|
||||||
|
|
||||||
@ -3865,7 +3865,7 @@ public:
|
|||||||
: hidden_size(hidden_size),
|
: hidden_size(hidden_size),
|
||||||
eps(eps) {}
|
eps(eps) {}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
if (ctx->weight_adapter) {
|
if (ctx->weight_adapter) {
|
||||||
w = ctx->weight_adapter->patch_weight(ctx->ggml_ctx, ctx->backend, w, prefix + "weight");
|
w = ctx->weight_adapter->patch_weight(ctx->ggml_ctx, ctx->backend, w, prefix + "weight");
|
||||||
|
|||||||
@ -450,7 +450,7 @@ protected:
|
|||||||
int64_t context_dim = 768; // hidden_size, 1024 for VERSION_SD2
|
int64_t context_dim = 768; // hidden_size, 1024 for VERSION_SD2
|
||||||
bool use_linear = false;
|
bool use_linear = false;
|
||||||
|
|
||||||
void init_params(ggml_context* ctx, const String2TensorStorage& tensor_storage_map = {}, const std::string prefix = "") {
|
void init_params(ggml_context* ctx, const String2TensorStorage& tensor_storage_map = {}, const std::string prefix = "") override {
|
||||||
auto iter = tensor_storage_map.find(prefix + "proj_out.weight");
|
auto iter = tensor_storage_map.find(prefix + "proj_out.weight");
|
||||||
if (iter != tensor_storage_map.end()) {
|
if (iter != tensor_storage_map.end()) {
|
||||||
int64_t inner_dim = n_head * d_head;
|
int64_t inner_dim = n_head * d_head;
|
||||||
|
|||||||
@ -285,7 +285,7 @@ namespace LLM {
|
|||||||
bool add_unit_offset = false)
|
bool add_unit_offset = false)
|
||||||
: hidden_size(hidden_size), eps(eps), add_unit_offset(add_unit_offset) {}
|
: hidden_size(hidden_size), eps(eps), add_unit_offset(add_unit_offset) {}
|
||||||
|
|
||||||
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) {
|
ggml_tensor* forward(GGMLRunnerContext* ctx, ggml_tensor* x) override {
|
||||||
ggml_tensor* w = params["weight"];
|
ggml_tensor* w = params["weight"];
|
||||||
if (ctx->weight_adapter) {
|
if (ctx->weight_adapter) {
|
||||||
w = ctx->weight_adapter->patch_weight(ctx->ggml_ctx, ctx->backend, w, prefix + "weight");
|
w = ctx->weight_adapter->patch_weight(ctx->ggml_ctx, ctx->backend, w, prefix + "weight");
|
||||||
|
|||||||
@ -21,7 +21,7 @@ bool write_gguf_file(const std::string& file_path,
|
|||||||
class GGUFStreamingWriter : public StreamingModelWriter {
|
class GGUFStreamingWriter : public StreamingModelWriter {
|
||||||
public:
|
public:
|
||||||
GGUFStreamingWriter() = default;
|
GGUFStreamingWriter() = default;
|
||||||
~GGUFStreamingWriter();
|
~GGUFStreamingWriter() override;
|
||||||
|
|
||||||
bool write_metadata(const std::string& file_path,
|
bool write_metadata(const std::string& file_path,
|
||||||
const std::vector<TensorWritePlan>& tensors,
|
const std::vector<TensorWritePlan>& tensors,
|
||||||
|
|||||||
@ -1153,9 +1153,9 @@ struct CompVisDenoiser : public Denoiser {
|
|||||||
return {c_skip, c_out, c_in};
|
return {c_skip, c_out, c_in};
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual sd::Tensor<float> noise_scaling(float sigma,
|
sd::Tensor<float> noise_scaling(float sigma,
|
||||||
const sd::Tensor<float>& noise,
|
const sd::Tensor<float>& noise,
|
||||||
const sd::Tensor<float>& latent) override {
|
const sd::Tensor<float>& latent) override {
|
||||||
GGML_ASSERT(noise.numel() == latent.numel());
|
GGML_ASSERT(noise.numel() == latent.numel());
|
||||||
return latent + noise * sigma;
|
return latent + noise * sigma;
|
||||||
}
|
}
|
||||||
@ -1165,7 +1165,7 @@ struct CompVisDenoiser : public Denoiser {
|
|||||||
return latent;
|
return latent;
|
||||||
}
|
}
|
||||||
|
|
||||||
float noise_level_to_sigma(float noise_level) {
|
float noise_level_to_sigma(float noise_level) override {
|
||||||
return noise_level / (1.0f - noise_level);
|
return noise_level / (1.0f - noise_level);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -1256,7 +1256,7 @@ struct DiscreteFlowDenoiser : public Denoiser {
|
|||||||
return latent * (1.0f / (1.0f - sigma));
|
return latent * (1.0f / (1.0f - sigma));
|
||||||
}
|
}
|
||||||
|
|
||||||
float noise_level_to_sigma(float noise_level) {
|
float noise_level_to_sigma(float noise_level) override {
|
||||||
return noise_level;
|
return noise_level;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -1396,7 +1396,7 @@ struct MiniT2IFlowDenoiser : public Denoiser {
|
|||||||
return latent;
|
return latent;
|
||||||
}
|
}
|
||||||
|
|
||||||
float noise_level_to_sigma(float noise_level) {
|
float noise_level_to_sigma(float noise_level) override {
|
||||||
SD_UNUSED(noise_level);
|
SD_UNUSED(noise_level);
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user