3 Nb@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ej e ZddlZejdkrde_ddZd&ddZd d Zd d Zd dZddZGdddZGdddZd'ddZddZejefddZddZddZd d!Zd"d#Z d$d%Z!dS)(N)seed_everythingLinuxc CsJ|j}|j}||ks ||krFtj|d|d|d|d| dS)Nz must be in z..z range, but it ranges )minmaxwarningswarn)tensor min_value max_valuenameZ actual_minZ actual_maxr 5/home/ec2-user/SageMaker/lama/saicinpainting/utils.pycheck_and_warn_input_rangesrcCs6x0|jD]$\}}||}|j|||||<q WdS)N)itemsget)targetZcur_dictprefixdefaultkvZ target_keyr r rsum_dict_with_prefixsrcCsPi}d}x |D]}t||d|d7}qWx t|D]}|||<q4W|S)NgMbP?r)rlist)Z dict_listresultnormdctrr r r average_dicts!s   rcsfdd|jDS)Ncsi|]\}}||qSr r ).0rr)rr r -sz&add_prefix_to_keys..)r)rrr )rradd_prefix_to_keys,sr cCsx|jD] }||_q WdS)N) parameters requires_grad)modulevalueparamr r rset_requires_grad0sr&cCsri}xh|jD]\\}}t|tr*dj|}t|trbx4t|jD]\}}|||d|<qBWq|||<qW|S)N_)r isinstancetuplejoindict flatten_dict)rrrrZsub_kZsub_vr r rr,5s    r,c@seZdZd ddZddZdS) LinearRamprrcCs||_||_||_||_dS)N) start_value end_value start_iterend_iter)selfr.r/r0r1r r r__init__CszLinearRamp.__init__cCsN||jkr|jS||jkr |jS||j|j|j}|jd||j|S)Nr)r0r.r1r/)r2ipartr r r__call__Is   zLinearRamp.__call__N)rrr7r)__name__ __module__ __qualname__r3r6r r r rr-Bs r-c@seZdZddZddZdS) LadderRampcCs8||_||_t|t|dks4tt|t|fdS)Nr) start_itersvalueslenAssertionError)r2r<r=r r rr3SszLadderRamp.__init__cCstj|j|}|j|S)N)bisect bisect_rightr<r=)r2r4Z segment_ir r rr6XszLadderRamp.__call__N)r8r9r:r3r6r r r rr;Rsr;laddercKs6|dkrtf|S|dkr$tf|Std|dS)NlinearrBzUnexpected ramp kind: )r-r; ValueError)kindkwargsr r rget_ramp]s   rGcCs2tjd|djtj}tjd|dS)NzReceived signal rzRequested stack trace: )LOGGERwarningr* traceback format_stack)sigframebtr r rprint_traceback_handleresrOcCs&tjd|d|tj||dS)NzSetting signal z handler )rHrIsignal)rLhandlerr r rregister_debug_signal_handlersksrRcCs(t|jdd}|dkrdSt|dS)NseedFT)r+rr)configrSr r rhandle_deterministic_configps rUcCsvtj|rt|jSt|tr0dd|jDSt|ttfrLdd|DSt|tj r`t |St dj t |dS)NcSsi|]\}}t||qSr ) get_shape)rnqr r rr}szget_shape..cSsg|] }t|qSr )rV)rrXr r r szget_shape..zunexpected type {}) torch is_tensorr)shaper(r+rrnumbersNumbertyperDformat)tr r rrVys    rVcCs\tjjdd}tjjdd}tjjdd}tjjdd}|dk pV|dk pV|dk pV|dk }|S)N MASTER_PORTZ NODE_RANK LOCAL_RANK WORLD_SIZE)osenvironr) master_portZ node_rankZ local_rank world_sizehas_rankr r rget_has_ddp_ranks  rjcCs dd}|S)Ncstjfdd}|S)Ncs^tjjdd}|dk }t}||ks8td|d||rPtjjd|g||dS)NTRAINING_PARENT_WORK_DIRzInconsistent state: has_parent=z , has_rank=zhydra.run.dir=)rerfrrjr?sysargvextend)argsrF parent_cwd has_parentri) main_funcr rnew_mainsz?handle_ddp_subprocess..main_decorator..new_main) functoolswraps)rrrsr )rrrmain_decoratorsz-handle_ddp_subprocess..main_decoratorr )rvr r rhandle_ddp_subprocesssrwcCsRtjjdd}|dk }t}||ks8td|d||dkrNtjtjd<|S)NrkzInconsistent state: has_parent=z , has_rank=)rerfrrjr?getcwd)rprqrir r rhandle_ddp_parent_processsry)r)rB)"r@rtloggingr]rerPrlrJrrZZpytorch_lightningr getLoggerr8rHplatformsystemSIGUSR1rrrr r&r,r-r;rGrOrRrUrVrjrwryr r r rs<