
    sii                     
   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"dS )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                     |r5t           j                            || t          t          t
                     dS t           j                            ||            dS )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      _/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/xgboost/testing/federated.py
run_serverr      se     	A..&(( 	/ 	
 	
 	
 	
 	
 	..z4@@@@@    rankdevicec           	      8   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                                        dk    r}t#          j                    5 }|                    t          j                            |d                     ddd           n# 1 swxY w Y   t
          j                            d           ddd           dS # 1 swxY w Y   dS )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   
 )$7$7$7 *	 H  =1<-.0:,-1<-.I   Z'I 
	+	7	7h	7	7 &E &E!">$">">">??1Q""!"=$"="="=>>1Aq!! * !
 
 V_vw&78		 i"# 
 
 
  d5k773CI3N!O!OPPPPP d5k76?93M!N!NOOOOO >""$$)),.. C&rw||FLAABBBC C C C C C C C C C C C C C CN--.CDDDM&E &E &E &E &E &E &E &E &E &E &E &E &E &E &E &E &E &Es7   D;H4GHG	HG	 "HHHuse_gpuc           	         d}t          j        t          || |f          }|                                 t	          j        d           |                                st          d          g }t          |           D ]T}|rd| nd}t          j        t          || |||f          }|
                    |           |                                 U|D ]}|                                 |                                 dS )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$z8 <  F LLNNNJqMMM?? ECDDDGj!!  #*5 (T:tXv$N
 
 
 	v  
r   	test_pathc                    d}| rzd}|                     d                                          }t          j        |           |                     d                                          }t          j        |           t          j                            t          j        |          d          }t          j                            t          j        |          d          }t          |          \  }}	t          |          \  }
}t          ||	d	          \  }}}}t          |
|d	          \  }}}}t          ||d
           t          ||d           t          ||d           t          ||d           t          || |           dS )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288::
j)))^^^2288::
j)))bk)446JKKJR[335HIII)*55GW'	22NFF%gw#FFFNBB-=#. . .*Hh( r25666x+@AAAr25666x+@AAAY7KKKKK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 C C C C C C C 4 4 4 4 4 4         ! ! ! ! ! !       * * * * * *

AS Ac AT Ad A A A A:E
:E:E&):E59:ECF:E	:E :E :E :Ezc T D T    2LT LD LS LT L L L L L Lr   