Skip to content

Commit 8add306

Browse files
committed
modified logic
1 parent a787795 commit 8add306

File tree

5 files changed

+33
-65
lines changed

5 files changed

+33
-65
lines changed

lib/llm/src/local_model.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::entrypoint::RouterConfig;
1818
use crate::mocker::protocols::MockEngineArgs;
1919
use crate::model_card::{self, ModelDeploymentCard};
2020
use crate::model_type::{ModelInput, ModelType};
21+
#[cfg(feature = "media-loading")]
2122
use crate::preprocessor::media::MediaDecoder;
2223
use crate::request_template::RequestTemplate;
2324

@@ -57,6 +58,7 @@ pub struct LocalModelBuilder {
5758
namespace: Option<String>,
5859
custom_backend_metrics_endpoint: Option<String>,
5960
custom_backend_metrics_polling_interval: Option<f64>,
61+
#[cfg(feature = "media-loading")]
6062
media_decoder: Option<MediaDecoder>,
6163
}
6264

@@ -83,6 +85,7 @@ impl Default for LocalModelBuilder {
8385
namespace: Default::default(),
8486
custom_backend_metrics_endpoint: Default::default(),
8587
custom_backend_metrics_polling_interval: Default::default(),
88+
#[cfg(feature = "media-loading")]
8689
media_decoder: Default::default(),
8790
}
8891
}
@@ -191,6 +194,7 @@ impl LocalModelBuilder {
191194
self
192195
}
193196

197+
#[cfg(feature = "media-loading")]
194198
pub fn media_decoder(&mut self, media_decoder: Option<MediaDecoder>) -> &mut Self {
195199
self.media_decoder = media_decoder;
196200
self
@@ -242,8 +246,11 @@ impl LocalModelBuilder {
242246
card.migration_limit = self.migration_limit;
243247
card.user_data = self.user_data.take();
244248
card.runtime_config = self.runtime_config.clone();
245-
//card.media_decoder = self.media_decoder.clone();
246-
card.media_decoder = Some(MediaDecoder::default());
249+
#[cfg(feature = "media-loading")]
250+
{
251+
//card.media_decoder = self.media_decoder.clone();
252+
card.media_decoder = Some(MediaDecoder::default());
253+
}
247254

248255
return Ok(LocalModel {
249256
card,
@@ -294,7 +301,10 @@ impl LocalModelBuilder {
294301
card.migration_limit = self.migration_limit;
295302
card.user_data = self.user_data.take();
296303
card.runtime_config = self.runtime_config.clone();
297-
card.media_decoder = Some(MediaDecoder::default());
304+
#[cfg(feature = "media-loading")]
305+
{
306+
card.media_decoder = Some(MediaDecoder::default());
307+
}
298308

299309
Ok(LocalModel {
300310
card,

lib/llm/src/model_card.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use dynamo_runtime::{slug::Slug, storage::key_value_store::Versioned};
2929
use serde::{Deserialize, Serialize};
3030
use tokenizers::Tokenizer as HfTokenizer;
3131

32+
#[cfg(feature = "media-loading")]
3233
use crate::preprocessor::media::MediaDecoder;
3334
use crate::protocols::TokenIdType;
3435

@@ -223,6 +224,7 @@ pub struct ModelDeploymentCard {
223224
pub runtime_config: ModelRuntimeConfig,
224225

225226
/// Media decoding configuration
227+
#[cfg(feature = "media-loading")]
226228
#[serde(default)]
227229
pub media_decoder: Option<MediaDecoder>,
228230

@@ -553,6 +555,7 @@ impl ModelDeploymentCard {
553555
model_input: Default::default(), // set later
554556
user_data: None,
555557
runtime_config: ModelRuntimeConfig::default(),
558+
#[cfg(feature = "media-loading")]
556559
media_decoder: None,
557560
checksum: OnceLock::new(),
558561
})

lib/llm/src/preprocessor.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use std::{collections::HashMap, pin::Pin, sync::Arc};
2727
use tracing;
2828

2929
use crate::model_card::{ModelDeploymentCard, ModelInfo};
30+
#[cfg(feature = "media-loading")]
3031
use crate::preprocessor::media::{MediaDecoder, MediaLoader};
3132
use crate::preprocessor::prompt::OAIChatLikeRequest;
3233
use crate::protocols::common::preprocessor::MultimodalDataMap;
@@ -114,6 +115,7 @@ pub struct OpenAIPreprocessor {
114115
/// Per-model runtime configuration propagated to response generator (e.g., reasoning/tool parser)
115116
runtime_config: crate::local_model::runtime_config::ModelRuntimeConfig,
116117
tool_call_parser: Option<String>,
118+
#[cfg(feature = "media-loading")]
117119
media_loader: Option<MediaLoader>,
118120
}
119121

@@ -153,19 +155,14 @@ impl OpenAIPreprocessor {
153155
}
154156
};
155157

156-
#[cfg(not(feature = "media-loading"))]
157-
let media_loader = {
158-
let _ = mdc; // silence unused warning when feature disabled
159-
None
160-
};
161-
162158
Ok(Arc::new(Self {
163159
formatter,
164160
tokenizer,
165161
model_info,
166162
mdcsum,
167163
runtime_config,
168164
tool_call_parser,
165+
#[cfg(feature = "media-loading")]
169166
media_loader,
170167
}))
171168
}
@@ -328,10 +325,18 @@ impl OpenAIPreprocessor {
328325

329326
let map_item = media_map.entry(type_str.clone()).or_default();
330327

331-
if let Some(loader) = &self.media_loader {
332-
let rdma_descriptor = loader.fetch_and_decode_media_part(content_part).await?;
333-
map_item.push(MultimodalData::Decoded(rdma_descriptor));
334-
} else {
328+
#[cfg(feature = "media-loading")]
329+
{
330+
if let Some(loader) = &self.media_loader {
331+
let rdma_descriptor = loader.fetch_and_decode_media_part(content_part).await?;
332+
map_item.push(MultimodalData::Decoded(rdma_descriptor));
333+
} else {
334+
map_item.push(MultimodalData::Url(url));
335+
}
336+
}
337+
#[cfg(not(feature = "media-loading"))]
338+
{
339+
let _ = content_part; // silence unused
335340
map_item.push(MultimodalData::Url(url));
336341
}
337342
}

lib/llm/src/preprocessor/media/mod.rs

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,55 +14,3 @@ pub use common::{Decoder, EncodedMediaData, MediaDecoder, MediaLoader, RdmaMedia
1414
pub use image::ImageDecoder;
1515
#[cfg(feature = "media-loading")]
1616
pub use video::VideoDecoder;
17-
18-
// Fallback stub APIs when media-loading feature is disabled
19-
#[cfg(not(feature = "media-loading"))]
20-
pub trait Decoder {}
21-
22-
#[cfg(not(feature = "media-loading"))]
23-
#[derive(Clone, Debug, Default, serde::Serialize, serde::Deserialize)]
24-
pub struct ImageDecoder {
25-
pub max_pixels: Option<usize>,
26-
}
27-
28-
#[cfg(not(feature = "media-loading"))]
29-
#[derive(Clone, Debug, Default, serde::Serialize, serde::Deserialize)]
30-
pub struct VideoDecoder {
31-
pub fps: Option<f32>,
32-
pub max_frames: Option<u32>,
33-
pub num_frames: Option<u32>,
34-
pub strict: bool,
35-
pub max_pixels: Option<usize>,
36-
}
37-
38-
#[cfg(not(feature = "media-loading"))]
39-
#[derive(Clone, Debug, Default, serde::Serialize, serde::Deserialize)]
40-
pub struct MediaDecoder {
41-
pub image_decoder: ImageDecoder,
42-
pub video_decoder: VideoDecoder,
43-
}
44-
45-
#[cfg(not(feature = "media-loading"))]
46-
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
47-
pub struct RdmaMediaDataDescriptor {}
48-
49-
#[cfg(not(feature = "media-loading"))]
50-
pub struct MediaLoader;
51-
52-
#[cfg(not(feature = "media-loading"))]
53-
impl MediaLoader {
54-
pub fn new(_media_decoder: MediaDecoder) -> anyhow::Result<Self> {
55-
anyhow::bail!(
56-
"media-loading feature is disabled; enable 'media-loading' feature to use MediaLoader"
57-
)
58-
}
59-
60-
pub async fn fetch_and_decode_media_part(
61-
&self,
62-
_oai_content_part: &dynamo_async_openai::types::ChatCompletionRequestUserMessageContentPart,
63-
) -> anyhow::Result<RdmaMediaDataDescriptor> {
64-
anyhow::bail!(
65-
"media-loading feature is disabled; cannot fetch/decode media without feature"
66-
)
67-
}
68-
}

lib/llm/src/protocols/common/preprocessor.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ use serde::{Deserialize, Serialize};
66

77
use super::{OutputOptions, SamplingOptions, StopConditions};
88
use crate::kv_router::RouterConfigOverride;
9+
#[cfg(feature = "media-loading")]
910
use crate::preprocessor::media::RdmaMediaDataDescriptor;
1011
use crate::protocols::TokenIdType;
1112

1213
#[derive(Serialize, Deserialize, Debug, Clone)]
1314
#[serde(untagged)]
1415
pub enum MultimodalData {
1516
Url(url::Url),
17+
#[cfg(feature = "media-loading")]
1618
Decoded(RdmaMediaDataDescriptor),
1719
}
1820

0 commit comments

Comments
 (0)