Files
stable-diffusion.cpp/src/model/integrations/fibo2.cpp
T
2026-10-24 01:23:42 +08:00

40 lines
2.1 KiB
C++

#include "model/diffusion/fibo2.hpp"
#include "conditioning/conditioner.hpp"
#include "conditioning/fibo2.hpp"
#include "model_definition.h"
#include "pipeline/model_builders.h"
static bool build_fibo2(const sd::model_builders::Context& ctx, const TokenizerConfig& tokenizers, sd::model_builders::CoreRunners& result) {
const auto* sd_ctx_params = &ctx.params;
const auto& tensor_storage_map = ctx.tensor_storage_map;
const auto version = ctx.version;
const auto& weight_manager = ctx.weight_manager;
result.conditioner = std::make_shared<Fibo2Conditioner>(ctx.backends.runtime_backend(SDBackendModule::TE),
tensor_storage_map, weight_manager, tokenizers);
result.diffusion = std::make_shared<Fibo2::Fibo2Runner>(ctx.backends.runtime_backend(SDBackendModule::DIFFUSION),
tensor_storage_map, "model.diffusion_model", weight_manager);
return true;
}
const std::vector<ModelDefinition>& fibo2_definitions() {
static const std::vector<ModelDefinition> definitions = [] {
std::vector<ModelDefinition> result;
{
ModelDefinition definition;
definition.version = VERSION_FIBO2;
definition.geometry = {1, 128, 3};
definition.ref_image_preset = "fibo2";
definition.name = "Fibo-2.0";
definition.traits.is_dit = true;
definition.traits.vae_kind = ModelVAEKind::FLUX2;
definition.sampling = {FLOW_PRED, 3.f};
definition.sampling.default_sample_method = EULER_SAMPLE_METHOD;
definition.sampling.default_scheduler = FLUX_SCHEDULER;
definition.build = build_fibo2;
result.push_back(std::move(definition));
}
return result;
}();
return definitions;
}