<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Eggroll用于機(jī)器學(xué)習(xí)的高性能計(jì)算框架

          聯(lián)合創(chuàng)作 · 2023-09-26 06:06

          Eggroll 是用于機(jī)器學(xué)習(xí)的簡(jiǎn)單高性能計(jì)算框架。

          構(gòu)建和部署 Eggroll

          1. 環(huán)境初始化

          1.1. 環(huán)境要求

          操作系統(tǒng) CentOS 7.2
          工具依賴(lài) 安裝 yum 源工具:gcc gcc-c++ make autoconfig openssl-devel supervisor gmp-devel mpfr-devel libmpc-devel libaio numactl autoconf automake libtool libffi-dev snappy snappy-devel zlib zlib-devel bzip2 bzip2-devel lz4-devel libasan
          操作用戶 用戶名: app 組:apps
          系統(tǒng)配置 1. 掛載300G可用磁盤(pán)空間到/data目錄 2. 創(chuàng)建/data/projects目錄,屬主app用戶

          1.2. 安裝軟件包

          集群所有節(jié)點(diǎn)都需要安裝:jdk1.8、virtualenv獨(dú)立運(yùn)行環(huán)境(可進(jìn)入python3.6版本)

          數(shù)據(jù)庫(kù)節(jié)點(diǎn):mysql8.0

          2. 項(xiàng)目拉取及打包

          方式一:從github拉取Eggroll項(xiàng)目,通過(guò)執(zhí)行auto-packaging.sh自動(dòng)打包腳本在同目錄下生成eggroll.tar.gz

          git clone -b v2.x https://github.com/WeBankFinTech/Eggroll.git
          cd Eggroll
          sh deploy/auto-packaging.sh

          方式二:從webank-ai云直接拉取

          wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/eggroll-v2.x-init.tar.gz
          mv eggroll-v2.x-init.tar.gz eggroll.tar.gz

          3. 部署發(fā)送

          3.1. 解壓

          將eggroll.tar.gz移到或發(fā)送到Eggroll的安裝目錄下,然后執(zhí)行:

          tar -xzf eggroll.tar.gz

          將eggroll.tar.gz解壓后,其目錄結(jié)構(gòu)如下:

          |--bin			--存放eggroll自帶啟動(dòng)腳本
          |--conf			--存放eggroll配置文件(包含部署需要修改文件)
          |--data			--存放數(shù)據(jù)庫(kù)初始化及緩存文件
          |--deploy		--存放部署相關(guān)文件
          |--lib			--存放eggroll所有jar包
          |--python		--存放eggroll python代碼部分

          3.2. 修改配置文件

          配置文件一共有三個(gè)需要修改:

          |--conf
          |----eggroll.properties
          |----route_tabe.json
          |----create-eggroll-meta-tables.sql

          各配置文件修改說(shuō)明如下:

          • 修改eggroll.properties配置文件
          vi conf/eggroll.properties
          <--數(shù)據(jù)庫(kù)配置選項(xiàng)說(shuō)明:
          	eggroll提供兩種數(shù)據(jù)庫(kù)連接方式:
          	1、項(xiàng)目自帶h2數(shù)據(jù)庫(kù),適用于單節(jié)點(diǎn)部署,使用此方式則以下幾項(xiàng)jdbc配置無(wú)需修改,使用原有默認(rèn)配置即可;
          	2、安裝的mysql8.0數(shù)據(jù)庫(kù),建議集群版多節(jié)點(diǎn)使用,若使用此方式則需要按如下方式進(jìn)行修改配置。-->
          
          eggroll.resourcemanager.clustermanager.jdbc.driver.class.name=com.mysql.cj.jdbc.Driver
          eggroll.resourcemanager.clustermanager.jdbc.url=jdbc:mysql://數(shù)據(jù)庫(kù)服務(wù)器ip:端口/數(shù)據(jù)庫(kù)名稱(chēng)?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true
          eggroll.resourcemanager.clustermanager.jdbc.username=數(shù)據(jù)庫(kù)用戶名
          eggroll.resourcemanager.clustermanager.jdbc.password=數(shù)據(jù)庫(kù)密碼
          
          <--eggroll相關(guān)配置參數(shù)說(shuō)明:
          	1、以下包含的路徑都是相對(duì)Eggroll的實(shí)際部署目錄之下的相對(duì)路徑,若不在Eggroll的實(shí)際部署目錄之下,可用系統(tǒng)絕對(duì)路徑;
          	2、根據(jù)部署方法分為三個(gè)修改級(jí)別:需要修改、建議默認(rèn)、默認(rèn)即可,其中端口為建議默認(rèn)但需要根據(jù)實(shí)際服務(wù)器端口是否可用或部署方式來(lái)考慮是否修改,以避免端口沖突。-->
          
          eggroll.data.dir=data/			<--存放緩存數(shù)據(jù)目錄,默認(rèn)即可-->
          eggroll.logs.dir=logs/			<--存放eggroll生成日志目錄,默認(rèn)即可-->
          eggroll.resourcemanager.clustermanager.host=127.0.0.1	<--clustermanager服務(wù)ip地址,需要修改-->
          eggroll.resourcemanager.clustermanager.port=4670	<--clustermanager服務(wù)端口,建議默認(rèn)-->
          eggroll.resourcemanager.nodemanager.port=9394	<--nodemanager服務(wù)端口:1、部署單機(jī)版與clustermanager相同,建議默認(rèn);2、部署集群版需修改為其他可用端口,需要修改-->
          eggroll.resourcemanager.process.tag=	<--集群服務(wù)標(biāo)簽,對(duì)不同集群需要單獨(dú)指,例如EGGROLL_TAG,需要修改-->
          
          eggroll.bootstrap.root.script=bin/eggroll_boot.sh	<--eggroll_boot.sh啟動(dòng)腳本路徑,默認(rèn)即可-->
          
          eggroll.resourcemanager.bootstrap.egg_pair.exepath=bin/roll_pair/egg_pair_bootstrap.sh		<--egg_pair啟動(dòng)腳本路徑,默認(rèn)即可-->
          eggroll.resourcemanager.bootstrap.egg_pair.venv=		<--virtualenv安裝路徑,需要修改-->
          eggroll.resourcemanager.bootstrap.egg_pair.pythonpath=python		<--python文件路徑,也作PYTHONPATH,默認(rèn)即可-->
          eggroll.resourcemanager.bootstrap.egg_pair.filepath=python/eggroll/roll_pair/egg_pair.py	<--egg_pair.py文件路徑,默認(rèn)即可-->
          
          <--以下幾項(xiàng)默認(rèn)即可-->
          eggroll.resourcemanager.bootstrap.roll_pair_master.exepath=bin/roll_pair/roll_pair_master_bootstrap.sh		<--roll_pair_master_bootstrap.sh文件路徑-->
          eggroll.resourcemanager.bootstrap.roll_pair_master.javahome=	<--java環(huán)境變量,系統(tǒng)安裝jdk1.8-->
          eggroll.resourcemanager.bootstrap.roll_pair_master.classpath=conf/:lib/*	<--eggroll啟動(dòng)時(shí)讀取classpath文件路徑-->
          eggroll.resourcemanager.bootstrap.roll_pair_master.mainclass=com.webank.eggroll.rollpair.RollPairMasterBootstrap	<--roll_pair_master主類(lèi)-->
          eggroll.resourcemanager.bootstrap.roll_pair_master.jvm.options=	<--jvm啟動(dòng)參數(shù)-->
          <--以上幾項(xiàng)默認(rèn)即可-->
          
          <--rollsite配置說(shuō)明:其服務(wù)ip、端口與partyId需要與route_table.json配置文件中對(duì)應(yīng)一致-->
          eggroll.rollsite.coordinator=webank			<--rollsite服務(wù)標(biāo)簽,默認(rèn)即可-->
          eggroll.rollsite.host=127.0.0.1				<--rollsite服務(wù)ip,需要修改-->
          eggroll.rollsite.port=9370					<--rollsite服務(wù)端口,建議默認(rèn)-->
          eggroll.rollsite.party.id=10001				<--集群partyId,不同集群需要使用不同的partyId,需要修改-->
          eggroll.rollsite.route.table.path=conf/route_table.json	<--route_table.json路由配置文件路徑,默認(rèn)即可-->
          
          • 修改route_table.json路由信息
          vi conf/route_table.json
          {
            "route_table":
            {
              "集群一partyId":			<--此處需要修改-->
              {   
                "default":[
                  {   
                    "port": 集群一rollsite服務(wù)端口,		<--此處需要修改-->
                    "ip": "集群一rollsite服務(wù)ip"		<--此處需要修改-->
                  }   
                ]   
              },  
              "集群二partyId":			<--此處需要修改-->
              {   
                "default":[
                  {   
                    "port": 集群二rollsite服務(wù)端口,		<--此處需要修改-->
                    "ip": "集群二rollsite服務(wù)ip"		<--此處需要修改-->
                  }   
                ]   
              }   
            },  
            "permission":
            {
              "default_allow": true
            }
          }
          • 修改數(shù)據(jù)庫(kù)初始化sql腳本
          <--修改說(shuō)明:此文件為初始化mysql數(shù)據(jù)庫(kù)建表及建庫(kù)使用的sql腳本,若使用默認(rèn)數(shù)據(jù)庫(kù)名為eggroll_meta則跳過(guò)此步驟,若實(shí)際需要使用其他庫(kù)名,可使用以下語(yǔ)句替換為實(shí)際的數(shù)據(jù)庫(kù)名稱(chēng),此處數(shù)據(jù)庫(kù)名稱(chēng)應(yīng)與eggroll.properties中所填數(shù)據(jù)庫(kù)名稱(chēng)一致-->
          
          sed -i "s/eggroll_meta/數(shù)據(jù)庫(kù)名稱(chēng)/" conf/create-eggroll-meta-tables.sql

          3.3. 多節(jié)點(diǎn)部署

          按上述說(shuō)明修改完配置文件后,若集群內(nèi)需多節(jié)點(diǎn)部署,由于各節(jié)點(diǎn)的配置文件完全相同,將其打包發(fā)送到集群各個(gè)節(jié)點(diǎn)的Eggroll安裝目錄下即可。

          4. 添加元信息

          集群多節(jié)點(diǎn)之間的服務(wù)之間是通過(guò)查詢(xún)數(shù)據(jù)庫(kù)存儲(chǔ)的元信息來(lái)感知的,因此需要登錄數(shù)據(jù)庫(kù)服務(wù)器對(duì)數(shù)據(jù)庫(kù)初始化并插入節(jié)點(diǎn)信息,在數(shù)據(jù)庫(kù)中執(zhí)行以下sql步驟:

          登錄數(shù)據(jù)庫(kù)執(zhí)行:
          
          <--此處注意使用create-eggroll-meta-tables.sql文件的絕對(duì)路徑-->
          >>source Eggroll安裝目錄/conf/create-eggroll-meta-tables.sql;
          
          <--將集群內(nèi)所有節(jié)點(diǎn)clustermanager和nodemanager服務(wù)信息插入server_node表中-->
          >>INSERT INTO server_node (host, port, node_type, status) values ('clustermanager服務(wù)ip', 'clustermanager服務(wù)端口', 'CLUSTER_MANAGER', 'HEALTHY');
          >>INSERT INTO server_node (host, port, node_type, status) values ('nodemanager服務(wù)ip', 'nodemanager服務(wù)port', 'NODE_MANAGER', 'HEALTHY');

          執(zhí)行完成執(zhí)行查詢(xún)server_node表檢查數(shù)據(jù)是否準(zhǔn)確:

          >>select * from server_node;
          >>exit

          5. 服務(wù)啟動(dòng)

          Eggroll的bin目錄中附帶啟動(dòng)腳本bin/eggroll.sh使用說(shuō)明:

          sh bin/eggroll.sh $1 $2		
          <--
          	$1:需要執(zhí)行操作的服務(wù)名稱(chēng),例如clustermanager,nodemanager,rollsite,all(表示所有服務(wù));
          	$2:需要執(zhí)行的操作,例如start(啟動(dòng)),status(查看狀態(tài)),stop(關(guān)閉),restart(重啟)
          -->

          使用例子:

          <--啟動(dòng)所有服務(wù)-->
          sh bin/eggroll.sh all start
          
          <--查看clustermanager服務(wù)狀態(tài)-->
          sh bin/eggroll.sh clustermanager status
          
          <--重啟rollsite服務(wù)-->
          sh bin/eggroll.sh rollsite restart
          
          <--關(guān)閉nodemanager服務(wù)-->
          sh bin/eggroll.sh nodemanager stop

          將各節(jié)點(diǎn)對(duì)應(yīng)的服務(wù)啟動(dòng)成功后,部署完成,進(jìn)入測(cè)試步驟。

          6. 測(cè)試

          6.1. 初始化環(huán)境變量

          登錄服務(wù)器進(jìn)行測(cè)試時(shí)需要執(zhí)行以下語(yǔ)句進(jìn)行環(huán)境變量初始化

          export EGGROLL_HOME=Eggroll安裝絕對(duì)路徑		--例如/data/projects/eggroll
          export PYTHONPATH=${EGGROLL_HOME}/python		
          source virtualenv/bin/activate				--進(jìn)入virtualenv獨(dú)立環(huán)境

          6.2. roll_pair測(cè)試

          cd ${EGGROLL_HOME}/python/eggroll/roll_pair/test
          python -m unittest test_roll_pair.TestRollPairStandalone		--單機(jī)模式
          python -m unittest test_roll_pair.TestRollPairCluster			--集群模式

          等待執(zhí)行完成出現(xiàn)"OK"字段為成功。

          6.3. roll_site測(cè)試

          • 通信測(cè)試

          (a). guest方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_remote

          等待執(zhí)行完成出現(xiàn)"OK"字段為guest方發(fā)送成功。

          (b). host方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_get

          等待執(zhí)行完成出現(xiàn)"OK"字段為host方接收成功。

          • 多partition通信測(cè)試

          (a). guest方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_remote_rollpair_big

          等待執(zhí)行完成出現(xiàn)"OK"字段為guest方發(fā)送成功。

          (b). host方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_get_rollpair_big

          等待執(zhí)行完成出現(xiàn)"OK"字段為host方接收成功。

          • rollpair通信測(cè)試

          (a). guest方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_remote_rollpair

          等待執(zhí)行完成出現(xiàn)"OK"字段為guest方發(fā)送成功。

          (b). host方執(zhí)行

          cd ${EGGROLL_HOME}/python/eggroll/roll_site/test
          python -m unittest test_roll_site.TestRollSiteCluster.test_get_rollpair

          等待執(zhí)行完成出現(xiàn)"OK"字段為host方接收成功。

          至此測(cè)試完成。

          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩中文网| 麻豆国产精品视频 | 91偷拍无码 | 精品中日韩无码 | 插进去综合网 |