Ë
    )täiŒ)  ã                   ó˜   — d dl Z d dlZddlmZmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZ  e	«       rd dlZd	„ Zd
„ Zd„ Zy)é    Né   )Ú SAGEMAKER_PARALLEL_EC2_INSTANCESÚTORCH_DYNAMO_MODES)ÚComputeEnvironmentÚSageMakerDistributedType)Úis_boto3_availableé   )ÚSageMakerConfig)ÚDYNAMO_BACKENDSÚ
_ask_fieldÚ_ask_optionsÚ_convert_dynamo_backendÚ_convert_mixed_precisionÚ#_convert_sagemaker_distributed_modeÚ_convert_yes_no_to_boolc                 ód  — t        j                  d«      }ddddiddœgdœ}	 |j                  | t        j                  |d	¬
«      ¬«       ddg d¢ddœgdœ}|j                  | | › d�t        j                  |d	¬
«      ¬«       y # |j                  j                  $ r t        d| › d�«       Y y w xY w)NÚiamz
2012-10-17ÚAllowÚServicezsagemaker.amazonaws.comzsts:AssumeRole)ÚEffectÚ	PrincipalÚAction)ÚVersionÚ	Statementé   )Úindent)ÚRoleNameÚAssumeRolePolicyDocument)zsagemaker:*zecr:GetDownloadUrlForLayerzecr:BatchGetImagezecr:BatchCheckLayerAvailabilityzecr:GetAuthorizationTokenzcloudwatch:PutMetricDatazcloudwatch:GetMetricDatazcloudwatch:GetMetricStatisticszcloudwatch:ListMetricszlogs:CreateLogGroupzlogs:CreateLogStreamzlogs:DescribeLogStreamszlogs:PutLogEventszlogs:GetLogEventszs3:CreateBucketzs3:ListBucketzs3:GetBucketLocationzs3:GetObjectzs3:PutObjectÚ*)r   r   ÚResourceÚ_policy_permission)r   Ú
PolicyNameÚPolicyDocumentzrole z# already exists. Using existing one)	Úboto3ÚclientÚcreate_roleÚjsonÚdumpsÚput_role_policyÚ
exceptionsÚEntityAlreadyExistsExceptionÚprint)Ú	role_nameÚ
iam_clientÚsagemaker_trust_policyÚpolicy_documents       ús/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/accelerate/commands/config/sagemaker.pyÚ_create_iam_role_for_sagemakerr2   &   så   € Ü—‘˜eÓ$€Jð  à¨iÐ9RÐ-SÐ_oÑpð
ñÐð*Fà×ÑØ¼¿¹ÐDZÐcdÔ9eð 	ô 	
ð $ð &òð* !$ñ/ðñ
ˆð> 	×"Ñ"ØØ#˜Ð$6Ð7ÜŸ:™: o¸aÔ@ð 	#õ 	
øð
 × Ñ ×=Ñ=ò FÜ��i�[Ð CÐDÖEðFús   £A B Â(B/Â.B/c                 ó\   — t        j                  d«      }|j                  | ¬«      d   d   S )Nr   )r   ÚRoleÚArn)r$   r%   Úget_role)r-   r.   s     r1   Ú_get_iam_role_arnr7   \   s.   € Ü—‘˜eÓ$€JØ×Ñ¨	ÐÓ2°6Ñ:¸5ÑAÐAó    c                  ó2  — t        dddgt        «      } d }| dk(  r!t        dd¬«      }|t        j                  d<   nGt        d	«       t        d
«      }|t        j                  d<   t        d«      }|t        j                  d<   t        dd¬«      }|t        j                  d<   t        dddgt        «      }|dk(  rt        d«      }nd}t        d|› d�«       t        |«       t        dt        dd¬«      }d }|rt        dd„ «      }t        dt        dd¬«      }	d }
|	rt        dd „ «      }
t        d!t        dd¬«      }d }|rt        d"d#„ «      }t        d$d%d&gt        «      }i }t        d't        dd¬«      }|rµd(}t        d)t        D �cg c]  }|j                  «       ‘Œ c}t        d*¬«      ||d+z   <   t        d,t        dd¬«      }|ret        d-t        d.„ d¬«      ||d/z   <   t        d0t        dd¬«      ||d1z   <   t        d2t        dd¬«      ||d3z   <   t        d4t        dd¬«      ||d5z   <   d6}|t        j                  k7  rt        |t        d7„ «      }n|d8z  }t        |d9„ d:¬«      }d}|t        j                  k7  rt        d;t        dd¬«      }d<}|t        j                   t        j"                  fv rt        d=t        d<¬«      }t        d>g d?¢t$        «      }|r|d@k(  rt        dA«       t'        |t(        j*                  |d||||||||
||¬B«      S c c}w )CNzHow do you want to authorize?zAWS Profilez7Credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) r   z'Enter your AWS Profile name: [default] Údefault)r:   ÚAWS_PROFILEzºNote you will need to provide AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY when you launch you training script with,`accelerate launch --aws_access_key_id XXX --aws_secret_access_key YYY`zAWS Access Key ID: ÚAWS_ACCESS_KEY_IDzAWS Secret Access Key: ÚAWS_SECRET_ACCESS_KEYz"Enter your AWS Region: [us-east-1]z	us-east-1ÚAWS_DEFAULT_REGIONzMDo you already have an IAM Role for executing Amazon SageMaker Training Jobs?zProvide IAM Role namez%Create new IAM role using credentialszEnter your IAM role name: Ú#accelerate_sagemaker_execution_rolez$Accelerate will create an iam role "z " using the provided credentialsz2Do you want to use custom Docker image? [yes/NO]: FzPlease enter yes or no.)r:   Úerror_messagezEnter your Docker image: c                 ó4   — t        | «      j                  «       S ©N©ÚstrÚlower©Úxs    r1   Ú<lambda>z%get_sagemaker_input.<locals>.<lambda>�   s   € ÌÈQËÏÉÌr8   zODo you want to provide SageMaker input channels with data locations? [yes/NO]: z\Enter the path to the SageMaker inputs TSV file with columns (channel_name, data_location): c                 ó4   — t        | «      j                  «       S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>™   ó   € ”c˜!“f—l‘l”nr8   z3Do you want to enable SageMaker metrics? [yes/NO]: z[Enter the path to the SageMaker metrics TSV file with columns (metric_name, metric_regex): c                 ó4   — t        | «      j                  «       S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>¦   rJ   r8   zWhat is the distributed mode?zNo distributed trainingzData parallelismz?Do you wish to optimize your script with torch dynamo?[yes/NO]:Údynamo_z+Which dynamo backend would you like to use?r   ÚbackendzGDo you want to customize the defaults sent to torch.compile? [yes/NO]: zWhich mode do you want to use?c                 ó&   — t         t        | «         S rB   )r   ÚintrF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>È   s   € Ô,¬S°«VÒ4r8   Úmodez\Do you want the fullgraph mode or it is ok to break model into several subgraphs? [yes/NO]: Úuse_fullgraphz7Do you want to enable dynamic shape tracing? [yes/NO]: Úuse_dynamicz6Do you want to enable regional compilation? [yes/NO]: Úuse_regional_compilationz:Which EC2 instance type you want to use for your training?c                 ó&   — t         t        | «         S rB   )r   rO   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>á   s   € ÔLlÔmpÐqrÓmsÒLtr8   z? [ml.p3.2xlarge]:c                 ó4   — t        | «      j                  «       S rB   rC   rF   s    r1   rH   z%get_sagemaker_input.<locals>.<lambda>å   s   € ÄSÈÃVÇ\Á\Ä^r8   zml.p3.2xlargezShould distributed operations be checked while running for errors? This can avoid timeout issues but will be slower. [yes/NO]: r	   z(How many machines do you want use? [1]: z2Do you wish to use FP16 or BF16 (mixed precision)?)ÚnoÚfp16Úbf16Úfp8rV   zŠTorch dynamo used without mixed precision requires TF32 to be efficient. Accelerate will enable it by default when launching your scripts.)Ú	image_uriÚcompute_environmentÚdistributed_typeÚuse_cpuÚdynamo_configÚec2_instance_typeÚprofileÚregionÚiam_role_nameÚmixed_precisionÚnum_machinesÚsagemaker_inputs_fileÚsagemaker_metrics_fileÚdebug)r   rO   r   ÚosÚenvironr,   r2   r   r   r   rE   r   r   r   ÚNOr   ÚDATA_PARALLELÚMODEL_PARALLELr   r
   r   ÚAMAZON_SAGEMAKER)Úcredentials_configurationÚaws_profileÚaws_access_key_idÚaws_secret_access_keyÚ
aws_regionÚrole_managementrb   Úis_custom_docker_imageÚdocker_imageÚis_sagemaker_inputs_enabledre   Úis_sagemaker_metrics_enabledrf   r\   r^   Ú
use_dynamoÚprefixrG   Úuse_custom_optionsÚec2_instance_queryr_   rg   rd   rc   s                           r1   Úget_sagemaker_inputr|   a   sÐ  € Ü ,Ø'Ø	ÐQÐRÜó!Ðð
 €KØ  AÒ%Ü Ð!JÐT]Ô^ˆØ$/Œ�
‰
�=Ò!äðVô	
ô 'Ð'<Ó=ÐØ*;Œ�
‰
Ð&Ñ'ä *Ð+DÓ EÐØ.CŒ�
‰
Ð*Ñ+äÐ@È+ÔV€JØ'1„B‡J�JÐ#Ñ$ä"ØWØ	 Ð"IÐJÜó€Oð
 ˜!ÒÜ"Ð#?Ó@‰à=ˆÜÐ4°]°OÐCcÐdÔeÜ& }Ô5ä'Ø<ÜØØ/ô	Ðð €LÙÜ!Ð"=Ñ?WÓXˆä",ØYÜØØ/ô	#Ðð !ÐÙ"Ü *ØjÙ$ó!
Ðô
 $.Ø=ÜØØ/ô	$Ð ð "ÐÙ#Ü!+ØiÙ$ó"
Ðô
 $Ø'Ø	"Ð$6Ð7Ü+óÐð
 €MÜØIÜØØ/ô	€Jñ ØˆÜ,8Ø9Ý /Ó0¡˜1ˆQ�W‰W�Y Ñ0Ü#Øô	-
ˆ�f˜yÑ(Ñ)ô (ØUÜ#ØØ3ô	
Ðñ Ü-9Ø0Ü"Ù4Ø!ô	.ˆM˜& 6™/Ñ*ô 7AØnÜ'ØØ7ô	7ˆM˜& ?Ñ2Ñ3ô 5?ØIÜ'ØØ7ô	5ˆM˜& =Ñ0Ñ1ô BLØHÜ'ØØ7ô	BˆM˜&Ð#=Ñ=Ñ>ð VÐØÔ3×6Ñ6Ò6Ü(ØÔ @ÑBtó
Ñð 	Ð2Ñ2ÐÜ&Ð'9Ñ;SÐ]lÔmÐà€EØÔ3×6Ñ6Ò6Üð NÜ#ØØ3ô	
ˆð €LØÔ4×BÑBÔD\×DkÑDkÐlÑlÜ!Ø6ÜØô
ˆô #Ø<Ú%Ü ó€Oñ �o¨Ò-Üð Yô	
ô ØÜ.×?Ñ?Ø)ØØ#Ø+ØØØ#Ø'Ø!Ø3Ø5Øôð ùòU 1s   Æ	L
)r'   rh   Úutils.constantsr   r   Úutils.dataclassesr   r   Úutils.importsr   Úconfig_argsr
   Úconfig_utilsr   r   r   r   r   r   r   r$   r2   r7   r|   © r8   r1   Ú<module>rƒ      sF   ðó  Û 	ç Sß MÝ /Ý (÷÷ ñ ñ ÔÛò3FòlBó
qr8   