Ë
    °Ó^j¸  ã                   ó  — d Z ddlZddlZddlZ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ZddlZddlmZ ddlmZ dd	lmZ d
ZdZdZdZdedededdfd„Zdedededededdfd„Z dedededdfd„Z!dedededdfd„Z"y)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                 óª   — |r1t         j                  j                  || t        t        t
        ¬«       yt         j                  j                  || «       y)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      úd/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/testing/federated.pyÚ
run_serverr      sE   € áÜ×Ñ×.Ñ.ØØÜ&Ü(Ü(ð 	/õ 	
ô 	×Ñ×.Ñ.¨z¸4Õ@ó    ÚrankÚdevicec           	      óì  — dd| › �||dœ}|rt         |d<   t        |d<   t        |d<   t        j                  «       }|€J ‚||z  }t        j                  j                  di |¤Ž5  t        d|› d	�«      \  }}	t        j                  ||	«      }
t        d|› d
�«      \  }}	t        j                  ||	«      }ddd|d|dœ}|df|
dfg}d}i }t        j                  ||
||d|¬«      }t        j                  t        t        t           |d   d   «      «      sJ ‚t        j                  t        t        t           |d   d   «      «      sJ ‚t
        j                  j!                  «       dk(  rkt#        j$                  «       5 }|j'                  t        j(                  j+                  |d«      «       ddd«       t
        j                  j-                  d«       ddd«       y# 1 sw Y   Œ1xY w# 1 sw Y   yxY w)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ØÐ Ð Ð Ø˜ZÑ'€Iô 
�‰×	+Ñ	+Ñ	7¨hÑ	7ñ &Eä! M°$°°vÐ">Ó?‰ˆˆ1Ü—‘˜Q Ó"ˆÜ! M°$°°uÐ"=Ó>‰ˆˆ1Ü—‘˜A˜qÓ!ˆð ØØ*Ø Ø!Øñ
ˆð ˜V�_ v¨wÐ&7Ð8ˆ	Øˆ	ð ˆÜ�i‰iØØØØØ"#Ø ô
ˆô × Ñ ¤¤d¬5¡k°7¸7Ñ3CÀIÑ3NÓ!OÔPÐPÐPÜ× Ñ ¤¤d¬5¡k°7¸6±?À9Ñ3MÓ!NÔOÐOÐOô �>‰>×"Ñ"Ó$¨Ò)Ü×,Ñ,Ó.ð C°&Ø—‘œrŸw™wŸ|™|¨F°LÓAÔB÷Cä�N‰N×-Ñ-Ð.CÔD÷M&Eð &E÷HCð Cú÷I&Eð &Eús%   Á$DG*Å>0GÆ.'G*ÇG'	Ç#G*Ç*G3Úuse_gpuc           	      óÊ  — d}t        j                  t        || |f¬«      }|j                  «        t	        j
                  d«       |j                  «       st        d«      ‚g }t        | «      D ]L  }|rd|› �nd}t        j                  t        || |||f¬«      }|j                  |«       |j                  «        ŒN |D ]  }|j                  «        Œ |j                  «        y)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ä×$Ñ$Ü  z°8Ð <ô€Fð ‡L�L„NÜ‡J�Jˆq„MØ�?‰?ÔÜÐCÓDÐDà€GÜ�jÓ!ò ˆÙ#*�5˜˜‘°ˆÜ ×(Ñ(Ü T¨:°t¸XÀvÐ$Nô
ˆð 	�‰�vÔØ�‰�ðð ò ˆØ�‰�ðà
×ÑÕr   Ú	test_pathc                 ó¸  — d}| rld}|j                  d¬«      j                  «       }t        j                  |«       |j                  d¬«      j                  «       }t        j                  |«       t        j
                  j                  t        j                  |«      d«      }t        j
                  j                  t        j                  |«      d«      }t        |«      \  }}	t        |«      \  }
}t        ||	d¬	«      \  }}}}t        |
|d¬	«      \  }}}}t        ||d
«       t        ||d«       t        ||d«       t        ||d«       t        || |¬«       y)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ˆWÜ'¨	Ó2�N€FˆFä% g¨wÀ#ÔF�N€BˆˆB�Ü-=Ø� #ô.Ñ*€Hˆh˜ (ô �r˜2Ð5Ô6Ü�x Ð+@ÔAä�r˜2Ð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   