Ë
    <�DjÊ  ã                   óü   — 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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)ÚTrainingCallbackz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      ú]C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\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.testé   é   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   Úcommunicator_envr7   Ú	n_threadsÚXÚyÚdtrainÚdtestÚparamÚ	watchlistÚ	num_roundÚresultsÚbstÚtmpdirs                     r   Ú
run_workerrR   '   s  € ð
 )Ø&0°°Ð$7Ø *Øñ	Ðñ Ü9DÐÐ5Ñ6Ü8BÐÐ4Ñ5Ü9DÐÐ5Ñ6ä—‘“€IØÐ Ñ Ø˜ZÑ'€Iô 
�‰×	+Ñ	+Ñ	?Ð.>Ñ	?ñ &Eä! M°$°°vÐ">Ó?‰ˆˆ1Ü—‘˜Q Ó"ˆÜ! M°$°°uÐ"=Ó>‰ˆˆ1Ü—‘˜A˜qÓ!ˆð ØØ*Ø Ø!Øñ
ˆð ˜V�_ v¨wÐ&7Ð8ˆ	Øˆ	ð .0ˆÜ�i‰iØØØØØ"#Ø ô
ˆô × Ñ ¤¤d¬5¡k°7¸7Ñ3CÀIÑ3NÓ!OÔPÑPÜ× Ñ ¤¤d¬5¡k°7¸6±?À9Ñ3MÓ!NÔ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ÚrangerR   ÚappendrD   Ú	terminate)	r   r   rS   r
   ÚserverÚworkersr   r   Úworkers	            r   Úrun_federatedre   d   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=localhostrb   )Ú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   rS   N)ÚformatÚsplitÚ
subprocessÚ
check_callr6   rC   rD   r<   Údata_dirr   r   r   re   )r   rS   rf   Ú	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__rX   r6   rm   r@   r[   Útypingr   r   Úsklearn.datasetsr   r   Úsklearn.model_selectionr   r   r8   Úxgboost.federatedr   r<   Úxgboost.trainingr	   r   r   r5   r   ÚintÚboolr   ÚstrrR   re   r�   r4   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   