Spaces:
Sleeping
Sleeping
Upload folder using huggingface_hub
Browse files- app.py +19 -3
- app_moe.py +19 -3
app.py
CHANGED
@@ -67,6 +67,14 @@ class WatermelonMoEModel(torch.nn.Module):
|
|
67 |
print(f"\033[92mINFO\033[0m: Loaded {len(self.models)} models for MoE ensemble")
|
68 |
print(f"\033[92mINFO\033[0m: Model weights: {self.weights}")
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
def forward(self, mfcc, image):
|
71 |
"""
|
72 |
Forward pass through the MoE model.
|
@@ -152,7 +160,8 @@ def predict_sugar_content(audio, image, model_dir="models", weights=None):
|
|
152 |
|
153 |
# Load MoE model
|
154 |
moe_model = WatermelonMoEModel(TOP_MODELS, model_dir, weights)
|
155 |
-
|
|
|
156 |
moe_model.eval()
|
157 |
print(f"\033[92mINFO\033[0m: Loaded MoE model with {len(moe_model.models)} backbone models")
|
158 |
|
@@ -239,12 +248,19 @@ def predict_sugar_content(audio, image, model_dir="models", weights=None):
|
|
239 |
|
240 |
# Add batch dimension for inference and move to device
|
241 |
if mfcc is not None:
|
|
|
242 |
mfcc = mfcc.unsqueeze(0).to(device)
|
243 |
-
print(f"\033[92mDEBUG\033[0m: Final MFCC shape with batch dimension: {mfcc.shape}")
|
244 |
|
245 |
if processed_image is not None:
|
|
|
246 |
processed_image = processed_image.unsqueeze(0).to(device)
|
247 |
-
print(f"\033[92mDEBUG\033[0m: Final image shape with batch dimension: {processed_image.shape}")
|
|
|
|
|
|
|
|
|
|
|
248 |
|
249 |
# Run inference with MoE model
|
250 |
print(f"\033[92mDEBUG\033[0m: Running inference with MoE model on device: {device}")
|
|
|
67 |
print(f"\033[92mINFO\033[0m: Loaded {len(self.models)} models for MoE ensemble")
|
68 |
print(f"\033[92mINFO\033[0m: Model weights: {self.weights}")
|
69 |
|
70 |
+
def to(self, device):
|
71 |
+
"""
|
72 |
+
Override to() method to ensure all sub-models are moved to the same device
|
73 |
+
"""
|
74 |
+
for model in self.models:
|
75 |
+
model.to(device)
|
76 |
+
return super(WatermelonMoEModel, self).to(device)
|
77 |
+
|
78 |
def forward(self, mfcc, image):
|
79 |
"""
|
80 |
Forward pass through the MoE model.
|
|
|
160 |
|
161 |
# Load MoE model
|
162 |
moe_model = WatermelonMoEModel(TOP_MODELS, model_dir, weights)
|
163 |
+
# Explicitly move the entire model to device
|
164 |
+
moe_model = moe_model.to(device)
|
165 |
moe_model.eval()
|
166 |
print(f"\033[92mINFO\033[0m: Loaded MoE model with {len(moe_model.models)} backbone models")
|
167 |
|
|
|
248 |
|
249 |
# Add batch dimension for inference and move to device
|
250 |
if mfcc is not None:
|
251 |
+
# Ensure mfcc is on the same device as the model
|
252 |
mfcc = mfcc.unsqueeze(0).to(device)
|
253 |
+
print(f"\033[92mDEBUG\033[0m: Final MFCC shape with batch dimension: {mfcc.shape}, device: {mfcc.device}")
|
254 |
|
255 |
if processed_image is not None:
|
256 |
+
# Ensure processed_image is on the same device as the model
|
257 |
processed_image = processed_image.unsqueeze(0).to(device)
|
258 |
+
print(f"\033[92mDEBUG\033[0m: Final image shape with batch dimension: {processed_image.shape}, device: {processed_image.device}")
|
259 |
+
|
260 |
+
# Double-check model is on the correct device
|
261 |
+
print(f"\033[92mDEBUG\033[0m: MoE model device: {next(moe_model.parameters()).device}")
|
262 |
+
for i, model in enumerate(moe_model.models):
|
263 |
+
print(f"\033[92mDEBUG\033[0m: Model {i} device: {next(model.parameters()).device}")
|
264 |
|
265 |
# Run inference with MoE model
|
266 |
print(f"\033[92mDEBUG\033[0m: Running inference with MoE model on device: {device}")
|
app_moe.py
CHANGED
@@ -67,6 +67,14 @@ class WatermelonMoEModel(torch.nn.Module):
|
|
67 |
print(f"\033[92mINFO\033[0m: Loaded {len(self.models)} models for MoE ensemble")
|
68 |
print(f"\033[92mINFO\033[0m: Model weights: {self.weights}")
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
def forward(self, mfcc, image):
|
71 |
"""
|
72 |
Forward pass through the MoE model.
|
@@ -152,7 +160,8 @@ def predict_sugar_content(audio, image, model_dir="models", weights=None):
|
|
152 |
|
153 |
# Load MoE model
|
154 |
moe_model = WatermelonMoEModel(TOP_MODELS, model_dir, weights)
|
155 |
-
|
|
|
156 |
moe_model.eval()
|
157 |
print(f"\033[92mINFO\033[0m: Loaded MoE model with {len(moe_model.models)} backbone models")
|
158 |
|
@@ -239,12 +248,19 @@ def predict_sugar_content(audio, image, model_dir="models", weights=None):
|
|
239 |
|
240 |
# Add batch dimension for inference and move to device
|
241 |
if mfcc is not None:
|
|
|
242 |
mfcc = mfcc.unsqueeze(0).to(device)
|
243 |
-
print(f"\033[92mDEBUG\033[0m: Final MFCC shape with batch dimension: {mfcc.shape}")
|
244 |
|
245 |
if processed_image is not None:
|
|
|
246 |
processed_image = processed_image.unsqueeze(0).to(device)
|
247 |
-
print(f"\033[92mDEBUG\033[0m: Final image shape with batch dimension: {processed_image.shape}")
|
|
|
|
|
|
|
|
|
|
|
248 |
|
249 |
# Run inference with MoE model
|
250 |
print(f"\033[92mDEBUG\033[0m: Running inference with MoE model on device: {device}")
|
|
|
67 |
print(f"\033[92mINFO\033[0m: Loaded {len(self.models)} models for MoE ensemble")
|
68 |
print(f"\033[92mINFO\033[0m: Model weights: {self.weights}")
|
69 |
|
70 |
+
def to(self, device):
|
71 |
+
"""
|
72 |
+
Override to() method to ensure all sub-models are moved to the same device
|
73 |
+
"""
|
74 |
+
for model in self.models:
|
75 |
+
model.to(device)
|
76 |
+
return super(WatermelonMoEModel, self).to(device)
|
77 |
+
|
78 |
def forward(self, mfcc, image):
|
79 |
"""
|
80 |
Forward pass through the MoE model.
|
|
|
160 |
|
161 |
# Load MoE model
|
162 |
moe_model = WatermelonMoEModel(TOP_MODELS, model_dir, weights)
|
163 |
+
# Explicitly move the entire model to device
|
164 |
+
moe_model = moe_model.to(device)
|
165 |
moe_model.eval()
|
166 |
print(f"\033[92mINFO\033[0m: Loaded MoE model with {len(moe_model.models)} backbone models")
|
167 |
|
|
|
248 |
|
249 |
# Add batch dimension for inference and move to device
|
250 |
if mfcc is not None:
|
251 |
+
# Ensure mfcc is on the same device as the model
|
252 |
mfcc = mfcc.unsqueeze(0).to(device)
|
253 |
+
print(f"\033[92mDEBUG\033[0m: Final MFCC shape with batch dimension: {mfcc.shape}, device: {mfcc.device}")
|
254 |
|
255 |
if processed_image is not None:
|
256 |
+
# Ensure processed_image is on the same device as the model
|
257 |
processed_image = processed_image.unsqueeze(0).to(device)
|
258 |
+
print(f"\033[92mDEBUG\033[0m: Final image shape with batch dimension: {processed_image.shape}, device: {processed_image.device}")
|
259 |
+
|
260 |
+
# Double-check model is on the correct device
|
261 |
+
print(f"\033[92mDEBUG\033[0m: MoE model device: {next(moe_model.parameters()).device}")
|
262 |
+
for i, model in enumerate(moe_model.models):
|
263 |
+
print(f"\033[92mDEBUG\033[0m: Model {i} device: {next(model.parameters()).device}")
|
264 |
|
265 |
# Run inference with MoE model
|
266 |
print(f"\033[92mDEBUG\033[0m: Running inference with MoE model on device: {device}")
|