ó
    uñ:i¸  ã                   ó  • S r SSKrSSKrSSKrSSKrSSKrSSKJrJr  SSK	J
r
Jr  SSKJr  SSKrSSKrSSKJr  SSKJr  SS	KJr  S
rSrSrSrS\S\S\SS4S jrS\S\S\S\S\SS4S jr S\S\S\SS4S jr!S\S\S\SS4S jr"g)zTests for federated learning.é    N)ÚListÚcast)Údump_svmlight_fileÚload_svmlight_file)Útrain_test_split)Útestingé   )ÚEvalsLog)Ú_Argszserver-key.pemzserver-cert.pemzclient-key.pemzclient-cert.pemÚportÚ
world_sizeÚwith_sslÚreturnc                 ó¬   • U(       a.  [         R                  R                  UU [        [        [
        S9  g[         R                  R                  X5        g)zRun federated server for test.)Úserver_key_pathÚserver_cert_pathÚclient_cert_pathN)ÚxgboostÚ	federatedÚrun_federated_serverÚ
SERVER_KEYÚSERVER_CERTÚCLIENT_CERT)r   r   r   s      Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/testing/federated.pyÚ
run_serverr      sC   € æÜ×Ñ×.Ñ.ØØÜ&Ü(Ü(ð 	/ò 	
ô 	×Ñ×.Ñ.¨zÕ@ó    ÚrankÚdevicec           
      ó"  • SSU  3UUS.nU(       a  [         US'   [        US'   [        US'   [        R                  " 5       nUc   eXa-  n[
        R                  R                  " S0 UD6   [        SU S	35      u  p‰[
        R                  " X‰5      n
[        SU S
35      u  p‰[
        R                  " X‰5      nSSSUSUS.nUS4U
S4/nSn0 n[
        R                  " UU
UUSUS9n[        R                  " [        [        [           US   S   5      5      (       d   e[        R                  " [        [        [           US   S   5      5      (       d   e[
        R                  R!                  5       S:X  al  ["        R$                  " 5        nUR'                  [        R(                  R+                  US5      5        SSS5        [
        R                  R-                  S5        SSS5        g! , (       d  f       N6= f! , (       d  f       g= f)z%Run federated client worker for test.r   z
localhost:)Údmlc_communicatorÚfederated_server_addressÚfederated_world_sizeÚfederated_rankÚfederated_server_cert_pathÚfederated_client_key_pathÚfederated_client_cert_pathNzagaricus.txt-z.trainz.testr	   é   zbinary:logisticÚhist)Ú	max_depthÚetaÚ	objectiveÚnthreadÚtree_methodr   ÚevalÚtrainé   )ÚevalsÚearly_stopping_roundsÚevals_resultÚloglossr   z
model.jsonzFinished training
© )r   Ú
CLIENT_KEYr   ÚosÚ	cpu_countÚxgbÚ
collectiveÚCommunicatorContextr   ÚDMatrixr/   ÚtmÚnon_increasingr   r   ÚfloatÚget_rankÚtempfileÚTemporaryDirectoryÚ
save_modelÚpathÚjoinÚcommunicator_print)r   r   r   r   r   Úcomm_envr8   Ú	n_threadsÚXÚyÚdtrainÚdtestÚparamÚ	watchlistÚ	num_roundÚresultsÚbstÚtmpdirs                     r   Ú
run_workerrS   )   sê  € ð
 )Ø&0°°Ð$7Ø *Øñ	€Hö Ü1<ˆÐ-Ñ.Ü0:ˆÐ,Ñ-Ü1<ˆÐ-Ñ.ä—’“€IØÑ Ð Ð ØÑ'€Iô 
�‰×	+Ò	+Ñ	7¨hÓ	7ä! M°$°°vÐ">Ó?‰ˆÜ—’˜QÓ"ˆÜ! M°$°°uÐ"=Ó>‰ˆÜ—’˜AÓ!ˆð ØØ*Ø Ø!Øñ
ˆð ˜V�_ v¨wÐ&7Ð8ˆ	Øˆ	ð ˆÜ�iŠiØØØØØ"#Ø ñ
ˆô × Ò ¤¤d¬5¡k°7¸7Ñ3CÀIÑ3NÓ!O×PÑPÐPÐPÜ× Ò ¤¤d¬5¡k°7¸6±?À9Ñ3MÓ!N×OÑOÐOÐOô �>‰>×"Ñ"Ó$¨Ó)Ü×,Ò,Ô.°&Ø—‘œrŸw™wŸ|™|¨F°LÓAÔB÷ /ä�N‰N×-Ñ-Ð.CÔD÷M 
8Ð	7÷H /Õ.ú÷I 
8Õ	7ús%   Á+D$H Æ0G/Æ?'H Ç/
G=	Ç9H È 
HÚuse_gpuc           	      óÚ  • Sn[         R                  " [        X0U4S9nUR                  5         [        R
                  " S5        UR                  5       (       d  [        S5      e/ n[        U 5       HN  nU(       a  SU 3OSn[         R                  " [        X0XaU4S9nUR                  U5        UR                  5         MP     U H  nUR                  5         M     UR                  5         g)z$Launcher for clients and the server.iƒ#  )ÚtargetÚargsr'   z(Error starting Federated Learning serverzcuda:ÚcpuN)ÚmultiprocessingÚProcessr   ÚstartÚtimeÚsleepÚis_aliveÚ
ValueErrorÚrangerS   ÚappendrE   Ú	terminate)	r   r   rT   r   ÚserverÚworkersr   r   Úworkers	            r   Úrun_federatedrf   f   sÇ   € à€Dä×$Ò$Ü °8Ð <ñ€Fð ‡L�L„NÜ‡J‚Jˆq„MØ�?‰?×ÑÜÐCÓDÐDà€GÜ�jÖ!ˆÞ#*�5˜˜‘°ˆÜ ×(Ò(Ü T°tÀvÐ$Nñ
ˆð 	�‰�vÔØ�‰Žñ "ó ˆØ�‰Žñ à
×ÑÕr   Ú	test_pathc                 óš  • SnU (       ah  SnUR                  SS9R                  5       n[        R                  " U5        UR                  SS9R                  5       n[        R                  " U5        [        R
                  R                  [        R                  " U5      S5      n[        R
                  R                  [        R                  " U5      S5      n[        U5      u  p‰[        U5      u  p«[        X‰SS	9u  pÍpï[        X«SS	9u  nnnn[        XÎS
5        [        UUS5        [        XßS5        [        UUS5        [        X0US9  g)zRun federated learning tests.r	   zvopenssl req -x509 -newkey rsa:2048 -days 7 -nodes -keyout {part}-key.pem -out {part}-cert.pem -subj /C=US/CN=localhostrc   )ÚpartÚclientzagaricus.txt.trainzagaricus.txt.testg      à?)Ú	test_sizezagaricus.txt-0.trainzagaricus.txt-0.testzagaricus.txt-1.trainzagaricus.txt-1.test)r   r   rT   N)ÚformatÚsplitÚ
subprocessÚ
check_callr7   rD   rE   r=   Údata_dirr   r   r   rf   )r   rT   rg   Ú	n_workersÚcommandÚ
server_keyÚ
client_keyÚ
train_pathÚX_trainÚy_trainÚX_testÚy_testÚX0ÚX1Úy0Úy1ÚX0_validÚX1_validÚy0_validÚy1_valids                       r   Úrun_federated_learningr‚      s  € à€Iæð KˆØ—^‘^¨�^Ð2×8Ñ8Ó:ˆ
Ü×Ò˜jÔ)Ø—^‘^¨�^Ð2×8Ñ8Ó:ˆ
Ü×Ò˜jÔ)ä—‘—‘œbŸkšk¨)Ó4Ð6JÓK€JÜ—‘—‘œRŸ[š[¨Ó3Ð5HÓI€Iä)¨*Ó5Ñ€GÜ'¨	Ó2�N€Fä% gÀ#ÑF�N€BˆBÜ-=Ø #ñ.Ñ*€Hˆh˜ (ô �rÐ5Ô6Ü�x Ð+@ÔAä�rÐ5Ô6Ü�x Ð+@ÔAä˜YÀ7ÓKr   )#Ú__doc__rY   r7   rn   rA   r\   Útypingr   r   Úsklearn.datasetsr   r   Úsklearn.model_selectionr   r   r9   Úxgboost.federatedr   r=   Ú_typingr
   r:   r   ÚCollArgsr   r   r6   r   ÚintÚboolr   ÚstrrS   rf   r‚   r5   r   r   Ú<module>r�      sí   ðá #ã Û 	Û Û Û ß ç CÝ 4ã Û Ý !å Ý *à€
Ø€Ø€
Ø€ðA�Sð A cð A°Tð A¸dô Að:EØ
ð:EØð:EØ&)ð:EØ59ð:EØCFð:Eà	ô:Eðz˜cð ¨Tð ¸Dð ÀTô ð2L Tð L°Dð LÀSð LÈTõ Lr   