
    =[g                         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      T/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/testing/federated.py
run_serverr      sE    ..&(( 	/ 	
 	..z4@    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68B459D56I   Z'I 
	+	+	?.>	?!M$v">?1Q"!M$u"=>1Aq! * !
 V_vw&78		 .0ii"# 
   d5k773CI3N!OPPP  d5k76?93M!NOOO >>""$),,.&rww||FLAB /NN--.CDM 
@	?H /.I 
@	?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$$z8 <F LLNJJqM??CDDGj!#*5 ((T:tXv$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)bkk)46JKJR[[35HII)*5GW'	2NFF%gw#FNBB-=#.*Hh( r256x+@Ar2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   