@@ -30,6 +30,8 @@ class Runtime(BaseUI):
3030
3131 log_event = None
3232
33+ is_studio = os .environ .get ('MODELSCOPE_ENVIRONMENT' ) == 'studio'
34+
3335 sft_plot = [
3436 {
3537 'name' : 'train/loss' ,
@@ -187,49 +189,52 @@ def do_build_ui(cls, base_tab: Type['BaseUI']):
187189 with gr .Blocks ():
188190 with gr .Row ():
189191 gr .Textbox (elem_id = 'running_cmd' , lines = 1 , scale = 20 , interactive = False , max_lines = 1 )
190- gr .Textbox (elem_id = 'logging_dir' , lines = 1 , scale = 20 , max_lines = 1 )
191- gr .Button (elem_id = 'show_log' , scale = 2 , variant = 'primary' )
192- gr .Button (elem_id = 'stop_show_log' , scale = 2 )
193- gr .Textbox (elem_id = 'tb_url' , lines = 1 , scale = 10 , interactive = False , max_lines = 1 )
194- gr .Button (elem_id = 'start_tb' , scale = 2 , variant = 'primary' )
195- gr .Button (elem_id = 'close_tb' , scale = 2 )
192+ if not cls .is_studio :
193+ gr .Textbox (elem_id = 'logging_dir' , lines = 1 , scale = 20 , max_lines = 1 )
194+ gr .Button (elem_id = 'show_log' , scale = 2 , variant = 'primary' )
195+ gr .Button (elem_id = 'stop_show_log' , scale = 2 )
196+ gr .Textbox (elem_id = 'tb_url' , lines = 1 , scale = 10 , interactive = False , max_lines = 1 )
197+ gr .Button (elem_id = 'start_tb' , scale = 2 , variant = 'primary' )
198+ gr .Button (elem_id = 'close_tb' , scale = 2 )
196199 with gr .Row ():
197200 gr .Textbox (elem_id = 'log' , lines = 6 , visible = False )
198- with gr .Row ():
199- gr .Dropdown (elem_id = 'running_tasks' , scale = 10 )
200- gr .Button (elem_id = 'refresh_tasks' , scale = 1 )
201- gr .Button (elem_id = 'kill_task' , scale = 1 )
201+ if not cls .is_studio :
202+ with gr .Row ():
203+ gr .Dropdown (elem_id = 'running_tasks' , scale = 10 )
204+ gr .Button (elem_id = 'refresh_tasks' , scale = 1 )
205+ gr .Button (elem_id = 'kill_task' , scale = 1 )
202206
203207 with gr .Row ():
204208 cls .all_plots = []
205209 for k in Runtime .sft_plot :
206210 name = k ['name' ]
207211 cls .all_plots .append (gr .Plot (elem_id = name , label = name ))
208212
209- cls .log_event = base_tab .element ('show_log' ).click (
210- Runtime .update_log , [], [cls .element ('log' )] + cls .all_plots ).then (
211- Runtime .wait , [base_tab .element ('logging_dir' ),
212- base_tab .element ('running_tasks' )], [cls .element ('log' )] + cls .all_plots )
213+ if not cls .is_studio :
214+ cls .log_event = base_tab .element ('show_log' ).click (
215+ Runtime .update_log , [], [cls .element ('log' )] + cls .all_plots ).then (
216+ Runtime .wait , [base_tab .element ('logging_dir' ),
217+ base_tab .element ('running_tasks' )], [cls .element ('log' )] + cls .all_plots )
213218
214- base_tab .element ('stop_show_log' ).click (lambda : None , cancels = cls .log_event )
219+ base_tab .element ('stop_show_log' ).click (lambda : None , cancels = cls .log_event )
215220
216- base_tab .element ('start_tb' ).click (
217- Runtime .start_tb ,
218- [base_tab .element ('logging_dir' )],
219- [base_tab .element ('tb_url' )],
220- )
221+ base_tab .element ('start_tb' ).click (
222+ Runtime .start_tb ,
223+ [base_tab .element ('logging_dir' )],
224+ [base_tab .element ('tb_url' )],
225+ )
221226
222- base_tab .element ('close_tb' ).click (
223- Runtime .close_tb ,
224- [base_tab .element ('logging_dir' )],
225- [],
226- )
227+ base_tab .element ('close_tb' ).click (
228+ Runtime .close_tb ,
229+ [base_tab .element ('logging_dir' )],
230+ [],
231+ )
227232
228- base_tab .element ('refresh_tasks' ).click (
229- Runtime .refresh_tasks ,
230- [base_tab .element ('running_tasks' )],
231- [base_tab .element ('running_tasks' )],
232- )
233+ base_tab .element ('refresh_tasks' ).click (
234+ Runtime .refresh_tasks ,
235+ [base_tab .element ('running_tasks' )],
236+ [base_tab .element ('running_tasks' )],
237+ )
233238
234239 @classmethod
235240 def update_log (cls ):
@@ -362,11 +367,12 @@ def format_time(seconds):
362367 @staticmethod
363368 def parse_info_from_cmdline (task ):
364369 pid = None
365- for i in range (3 ):
366- slash = task .find ('/' )
367- if i == 0 :
368- pid = task [:slash ].split (':' )[1 ]
369- task = task [slash + 1 :]
370+ if '/cmd:' in task :
371+ for i in range (3 ):
372+ slash = task .find ('/' )
373+ if i == 0 :
374+ pid = task [:slash ].split (':' )[1 ]
375+ task = task [slash + 1 :]
370376 args = task .split ('swift sft' )[1 ]
371377 args = [arg .strip () for arg in args .split ('--' ) if arg .strip ()]
372378 all_args = {}
@@ -427,6 +433,8 @@ def plot(task):
427433 return [None ] * len (Runtime .sft_plot )
428434 _ , all_args = Runtime .parse_info_from_cmdline (task )
429435 tb_dir = all_args ['logging_dir' ]
436+ if not os .path .exists (tb_dir ):
437+ return [None ] * len (Runtime .sft_plot )
430438 fname = [
431439 fname for fname in os .listdir (tb_dir )
432440 if os .path .isfile (os .path .join (tb_dir , fname )) and fname .startswith ('events.out' )
0 commit comments