5

hydra.run.dir=XXXコマンドラインから設定することで、configの作業ディレクトリを変更できることを知っています。しかし、設定したディレクトリにログも保存されるように、CLI 引数を使用せずにスクリプトから適切に実行するにはどうすればよいですか?

次の理由により、このコードは機能しません。

  1. ディレクトリを変更しようとすると、ヒドラとそのロガーはすでに初期化されています
  2. そのような属性はありませんcfg.hydra

UPD : コメントにポインタがありました。if __name__ == 'main':ヒドラが呼び出される前に、ブロック内のヒドラ パラメーターを変更できます。hydra.run.dirしかし、スクリプトからアクセスして変更するにはどうすればよいでしょうか?

    @hydra.main(config_path="conf", config_name="config")
    def main(cfg):
        cfg.hydra.run.dir = "./c_out/cached_loss"  # no such attribute
        logger.info('I log something')

私のヒドラ設定は次のようになります。

defaults:                     
  - hydra/job_logging: custom_logging 
# hydra/custom_logging.yaml
# python logging configuration for tasks                           
version: 1                                                         
formatters:                                                        
  simple:                                                          
    format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s' 
handlers:                                                          
  console:                                                         
    class: logging.StreamHandler                                   
    formatter: simple                                              
    stream: ext://sys.stdout                                       
  file:                                                            
    class: logging.FileHandler                                     
    formatter: simple                                              
    # relative to the job log directory                            
    filename: ${hydra.job.name}.log                                
root:                                                              
  level: INFO                                                      
  handlers: [console, file]                                        
                                                                   
disable_existing_loggers: false                                    
4

3 に答える 3