@@ -66,77 +66,67 @@ def _ensure_run(self):
6666 )
6767 return self .run
6868
69- def _check_media_exists (self , filepath ):
69+ def _check_media_exists (self , metadata_dict ):
7070 """
71- Check if a media file has already been logged to WandB using only UUID lookup .
71+ Check if a media file has already been logged to WandB using UUID from metadata .
7272
7373 Args:
74- filepath: Path to the media file to check
74+ metadata_dict: Dictionary containing metadata with potential media_uuid
7575
7676 Returns:
7777 tuple: (exists (bool), media_uuid (str or None))
7878 """
79- metadata_path = os .path .splitext (filepath )[0 ] + ".json"
80- if os .path .exists (metadata_path ):
79+ if not metadata_dict :
80+ return False , None
81+
82+ media_uuid = metadata_dict .get ("media_uuid" )
83+ if media_uuid :
8184 try :
82- with open (metadata_path , "r" ) as f :
83- metadata = json .load (f )
84-
85- media_uuid = metadata .get ("media_uuid" )
86- if media_uuid :
87- api = wandb .Api ()
88- project = f"subnet-{ self .config .netuid } -validator"
89- artifact_path = f"{ self .config .wandb .entity } /{ project } /media-{ media_uuid } :latest"
90- try :
91- artifact = api .artifact (artifact_path )
92- return True , media_uuid
93- except wandb .errors .CommError :
94- pass
95- except (json .JSONDecodeError , IOError ) as e :
96- bt .logging .warning (f"Error reading metadata file: { e } " )
85+ api = wandb .Api ()
86+ project = f"subnet-{ self .config .netuid } -validator"
87+ artifact_path = f"{ self .config .wandb .entity } /{ project } /media-{ media_uuid } :latest"
88+ artifact = api .artifact (artifact_path )
89+ return True , media_uuid
90+ except wandb .errors .CommError :
91+ # Artifact doesn't exist in W&B
92+ pass
9793
9894 return False , None
9995
100- def _maybe_log_media (self , media_path , metadata_path ):
96+ def _maybe_log_media (self , media_path , metadata_dict ):
10197 """
10298 Log media as a WandB Artifact, with simple UUID-based deduplication.
10399 Only logs media that hasn't been logged yet.
104100 Only logs synthetic, locally generated media.
105101
106102 Args:
107103 media_path: Path to the media file
108- metadata_path: Path to the metadata JSON file
104+ metadata_dict: Dictionary containing metadata from database
109105
110106 Returns:
111107 str or None: UUID assigned to the media if logged, None if not logged
112108 """
113- exists , existing_uuid = self ._check_media_exists (media_path )
109+ exists , existing_uuid = self ._check_media_exists (metadata_dict )
114110 if exists :
115111 bt .logging .info (f"Media already exists in WandB with UUID: { existing_uuid } " )
116112 return existing_uuid
117113
118114 run = self ._ensure_run ()
119115
120- metadata = {}
121- if os .path .exists (metadata_path ):
122- try :
123- with open (metadata_path , "r" ) as f :
124- metadata = json .load (f )
125- except json .JSONDecodeError :
126- bt .logging .warning (f"Error parsing metadata file: { metadata_path } " )
116+ if not metadata_dict :
117+ bt .logging .warning ("No metadata provided for media logging" )
118+ return None
119+
120+ metadata = metadata_dict .copy ()
127121
128122 # Only create uuids for and log locally generated synthetic media.
129123 # All other media are already stored on Huggingface
130124 if not metadata .get ("model_name" ):
125+ bt .logging .debug (f"WandB: Skipping media logging - no model_name in metadata" )
131126 return None
132127
133128 if not metadata .get ("media_uuid" ):
134129 metadata ["media_uuid" ] = str (uuid .uuid4 ())
135- try :
136- with open (metadata_path , "w" ) as f :
137- json .dump (metadata , f , indent = 2 )
138- except IOError as e :
139- bt .logging .warning (f"Error writing metadata file: { e } " )
140130
141131 media_uuid = metadata ["media_uuid" ]
142132 media_artifact = wandb .Artifact (
@@ -223,16 +213,23 @@ def log(self, challenge_results, media_sample, aug_params):
223213 # Step 1: Log media if applicable
224214 # Only locally generated synthetic media are logged
225215 media_path = media_sample .get ("path" )
226- metadata_path = media_sample .get ("metadata_path" )
227- if media_path and metadata_path :
228- media_uuids = [self ._maybe_log_media (media_path , metadata_path )]
216+ metadata_dict = media_sample .get ("metadata" )
217+
218+ bt .logging .debug (f"WandB media logging: media_path={ media_path } , metadata_present={ metadata_dict is not None } " )
219+
220+ if media_path and metadata_dict :
221+ media_uuid = self ._maybe_log_media (media_path , metadata_dict )
222+ media_uuids = [media_uuid ] if media_uuid else []
229223 else :
230224 media_uuids = []
231225 for i in range (1 ):
232- media_path = media_sample .get (f"sample_{ i } " , {}).get ("path" )
233- metadata_path = media_sample .get (f"sample_{ i } " , {}).get ("metadata_path" )
234- if media_path and metadata_path :
235- media_uuids .append (self ._maybe_log_media (media_path , metadata_path ))
226+ sample = media_sample .get (f"sample_{ i } " , {})
227+ media_path = sample .get ("path" )
228+ metadata_dict = sample .get ("metadata" )
229+ if media_path and metadata_dict :
230+ media_uuid = self ._maybe_log_media (media_path , metadata_dict )
231+ if media_uuid :
232+ media_uuids .append (media_uuid )
236233
237234 # Step 2: Log challenge results with reference to logged media uuid if available
238235 self ._log_challenge_results (challenge_results , media_sample , media_uuids , aug_params )
0 commit comments