#pragma once #include "engine/framework/assets/tensor_source.h" #include "engine/framework/core/execution_context.h" #include "engine/framework/modules/transformers/causal_decoder_runtime.h" #include "engine/models/fireredtts3/assets.h" #include #include #include namespace engine::models::fireredtts3 { class FireRedQwen3ARRuntime { public: FireRedQwen3ARRuntime( std::shared_ptr assets, engine::core::ExecutionContext & execution, size_t graph_arena_bytes, size_t helper_graph_arena_bytes, size_t weight_context_bytes, engine::assets::TensorStorageType storage_type, bool instruct); ~FireRedQwen3ARRuntime(); FireRedQwen3ARRuntime(const FireRedQwen3ARRuntime &) = delete; FireRedQwen3ARRuntime & operator=(const FireRedQwen3ARRuntime &) = delete; std::vector token_embedding(const std::vector & token_ids); std::vector speaker_llm(const std::vector & speaker); std::vector speaker_dit(const std::vector & speaker); std::vector patch_encode(const std::vector & latents); std::vector dit_head(const std::vector & hidden, int64_t rows); float stop(const std::vector & hidden); std::vector text_logits(const std::vector & hidden); engine::modules::CausalDecoderPrefillResult prefill_embeddings(const std::vector & embeddings, int64_t steps); void start_decode_embeddings(const engine::runtime::TransformerKVState & state, int64_t required_cache_steps); engine::modules::CausalDecoderStepResult decode_embedding(const std::vector & embedding); void release_graphs(); void release_backbone_graphs(); private: class Impl; std::unique_ptr impl_; }; } // namespace engine::models::fireredtts3