Browse Source

后端工具对接完成并封入docker

root 9 months ago
parent
commit
9f9806f377
43 changed files with 196 additions and 245 deletions
  1. 3 2
      docker-compose.yml
  2. 9 4
      server/Dockerfile
  3. 88 7
      server/app.py
  4. 1 0
      server/config.yml
  5. 1 0
      server/lemon_master/config/demo.conf
  6. 4 1
      server/lemon_master/run/mutation_executor.py
  7. BIN
      server/output/1/fashion2/crash/fashion2_origin0-MLA1.hdf5
  8. BIN
      server/output/1/fashion2/crash/fashion2_origin0.hdf5
  9. BIN
      server/output/1/fashion2/fashion2_lemon_results.pkl
  10. BIN
      server/output/1/fashion2/inner_output/prediction_fashion2_origin0-ARep1.h.pkl
  11. BIN
      server/output/1/fashion2/inner_output/prediction_fashion2_origin0-ARep2.h.pkl
  12. BIN
      server/output/1/fashion2/inner_output/prediction_fashion2_origin0-LR1-LA1.h.pkl
  13. BIN
      server/output/1/fashion2/inner_output/prediction_fashion2_origin0-LR1.h.pkl
  14. BIN
      server/output/1/fashion2/inner_output/prediction_fashion2_origin0-NEB1.h.pkl
  15. 0 61
      server/output/1/fashion2/metrics_result/fashion2_D_MAD_result.csv
  16. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-ARep1.hdf5res.npy
  17. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-ARep2.hdf5
  18. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-ARep2.hdf5res.npy
  19. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-LR1-LA1.hdf5
  20. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-LR1-LA1.hdf5res.npy
  21. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-LR1.hdf5
  22. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-LR1.hdf5res.npy
  23. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-MLA1.hdf5res.npy
  24. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-NEB1.hdf5
  25. BIN
      server/output/1/fashion2/mut_model/fashion2_origin0-NEB1.hdf5res.npy
  26. 0 5
      server/output/1/fashion2/mutant_history.txt
  27. 0 74
      server/output/1/fashion2/mxnet.json
  28. 0 65
      server/output/1/fashion2/tensorflow.json
  29. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/crash/fashion2_origin0-ARem1.hdf5
  30. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/fashion2_lemon_results.pkl
  31. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/inner_output/prediction_fashion2_origin0-WS1.h.pkl
  32. 0 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/inner_output/prediction_fashion2_origin0.h.pkl
  33. 21 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/metrics_result/fashion2_D_MAD_result.csv
  34. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-ARem1.hdf5res.npy
  35. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-WS1.hdf5
  36. BIN
      server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-WS1.hdf5res.npy
  37. 0 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0.hdf5
  38. 0 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0.hdf5res.npy
  39. 1 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/mutant_history.txt
  40. 7 7
      server/output/task_2024-07-19T14:45:07_1/fashion2/mutator_history.csv
  41. 20 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/mxnet.json
  42. 20 0
      server/output/task_2024-07-19T14:45:07_1/fashion2/tensorflow.json
  43. 21 19
      server/tool.py

+ 3 - 2
docker-compose.yml

@@ -5,9 +5,10 @@ services:
     build: ./server
     restart: always
     ports:
-      - 8080
+      - 5000:5000
     volumes:
-      - ./server/output:/output
+      - ./server/output:/app/output
+      - ./server/config.yml:/app/config.yml
     deploy:
       resources:
         reservations:

+ 9 - 4
server/Dockerfile

@@ -49,15 +49,20 @@ RUN rm -rf env
 
 
 # 复制项目文件
-WORKDIR /app
 
-COPY LEMON-master /app/LEMON-master
+
+COPY lemon_master /app/lemon_master
+COPY app.py /app/app.py
+COPY tool.py /app/tool.py
+# COPY config.yml /app/config.yml
 
 RUN echo "conda activate lemon" >> ~/.bashrc
 
-# RUN conda install -n lemon cudatoolkit=10.1
+WORKDIR /app
 # 随便启动一个进程空转
-CMD ["/bin/bash"]
+
+ENTRYPOINT ["/bin/bash", "-c", "source ~/.bashrc && /opt/conda/envs/lemon/bin/python app.py"]
+# CMD ["/bin/bash"]
 # CMD ["tail", "-f", "/dev/null"]
 
 

+ 88 - 7
server/app.py

@@ -2,18 +2,73 @@ from flask import Flask, request
 from tool import runtool
 import yaml
 import os
+import json
 
+import threading
 app = Flask(__name__)
 
 with open('config.yml', 'r') as file:
     config = yaml.load(file, Loader=yaml.FullLoader)
 
-env = os.getenv('FLASK_ENV', 'development')
+# env = os.getenv('FLASK_ENV', 'development')
 app.config.update(config['default'])
-if env in config:
-    app.config.update(config[env])
+# if env in config:
+# app.config.update(config[env])
 
 
+base_dir = os.path.dirname(os.path.abspath(__file__))
+task_output_dir = os.path.join(base_dir, "output")
+
+def get_task_list():
+    '''
+    获取任务列表,
+    任务是task_output_dir下的第一层文件夹
+    
+    同时检查是否超过了最大任务数,如果超过了,删除最早的任务直到任务数小于最大任务数
+    '''
+    
+    task_list = []
+    task_list = os.listdir(task_output_dir)
+    # 按照时间排序
+    task_list.sort()
+    
+    # 检查是否超过了最大任务数
+    max_task_num = app.config['max_task_num']
+    if len(task_list) > max_task_num:
+        # 删除最早的任务
+        task_list.sort()
+        for i in range(len(task_list) - max_task_num):
+            task_dir = os.path.join(task_output_dir, task_list[i])
+            os.system("rm -rf " + task_dir)
+    
+    task_list = os.listdir(task_output_dir)
+    task_list.sort()
+    return task_list
+
+def get_result(task_id:str):
+    result_dir = os.path.join(task_output_dir, task_id)
+    # 查看result_dir的下一级文件夹
+    
+    result_model_dir = os.path.join(result_dir,os.listdir(result_dir)[0])
+    print(result_model_dir)
+    
+    mxnet_json = os.path.join(result_model_dir, "mxnet.json")
+    with open(
+        mxnet_json, "r"
+    ) as file1:  # tensorflow.json
+        data1 = json.load(file1)
+    
+    tensorflow_json = os.path.join(result_model_dir, "tensorflow.json")
+    with open(tensorflow_json, "r") as file2:
+        data2 = json.load(file2)
+        
+    combined_data = {
+        "mxnet": data1,
+        "tensorflow": data2
+    }
+    return combined_data
+    
+    
 @app.route('/')
 def hello_world():  # put application's code here
     return 'Hello World!'
@@ -24,15 +79,41 @@ def getModels():
             'alexnet-cifar10', 'mobilenet.1.00.224-imagenet', 'vgg16-imagenet']
     return models
 
+import time
+
 @app.route('/run', methods=['POST'])
 def run():
     data = request.get_json()
     exp = data['exp']
     mutate_num = data['mutate_num']
-    data = runtool(exp, mutate_num)
+    
+    #创建task_id: task_2021-09-07T14:57:00_1
+    task_id = 'task_' + time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime()) + '_' + str(len(get_task_list())+1)
+    
+    # 开启一个线程执行,直接返回请求
+    # data = runtool(exp, mutate_num,task_id)
+    t = threading.Thread(target=runtool, args=(exp, mutate_num,task_id))
+    t.start()
+    
+    return {'task_id': task_id}
 
-    print(data)
-    return data
+@app.route('/get_task_list', methods=['GET'])
+def get_task_list_api():
+    return {'task_list': get_task_list()}
 
+@app.route('/get_task_result', methods=['POST'])
+def get_task_result():
+    data = request.get_json()
+    task_id = data['task_id']
+    
+    try:
+        res = get_result(task_id)
+        return res
+    except Exception as e:
+        return {'error:':'错误的task_id或任务未完成'}
+    
+    
 if __name__ == '__main__':
-    app.run()
+    # app.run()
+    from waitress import serve
+    serve(app, host="0.0.0.0", port=5000)

+ 1 - 0
server/config.yml

@@ -1,3 +1,4 @@
 default:
   output_dir: server/lemon_master/lemon_outputs
   config_name: demo.conf
+  max_task_num: 9

+ 1 - 0
server/lemon_master/config/demo.conf

@@ -17,6 +17,7 @@ dataset_dir=dataset
 backend=tensorflow mxnet
 #..python_prefix = /root/anaconda3/envs/
 python_prefix=/opt/conda/envs/
+# python_prefix=/root/miniconda3/envs/
 
 output_dir = lemon_outputs
 mutate_num=20 

+ 4 - 1
server/lemon_master/run/mutation_executor.py

@@ -4,7 +4,7 @@ import sys
 import os
 
 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-# sys.path.append("../")
+sys.path.append("../")
 from scripts.logger.lemon_logger import Logger
 import warnings
 import datetime
@@ -82,7 +82,10 @@ def lemon_process(exp, root_dir, output_dir, mutate_num, config_name):
             else:
                 origin_model_name = "{}_origin.h5".format(exp_identifier)
             origin_model_file = os.path.join(flags.origin_model_dir, origin_model_name)
+            # print(os.getcwd())
+            run_dir = os.path.join(root_dir, "run")
             mutate_lemon = (
+                "cd {} && ".format(run_dir)+ 
                 "{}/lemon/bin/python -u -m mutate_lemon --mutate_op {} --model {} --output_dir {}"
                 " --backends {} --mutate_num {} --mutate_ratio {} --exp {} --test_size {} --redis_db {} --config_name {}".format(
                     flags.python_prefix,

BIN
server/output/1/fashion2/crash/fashion2_origin0-MLA1.hdf5


BIN
server/output/1/fashion2/crash/fashion2_origin0.hdf5


BIN
server/output/1/fashion2/fashion2_lemon_results.pkl


BIN
server/output/1/fashion2/inner_output/prediction_fashion2_origin0-ARep1.h.pkl


BIN
server/output/1/fashion2/inner_output/prediction_fashion2_origin0-ARep2.h.pkl


BIN
server/output/1/fashion2/inner_output/prediction_fashion2_origin0-LR1-LA1.h.pkl


BIN
server/output/1/fashion2/inner_output/prediction_fashion2_origin0-LR1.h.pkl


BIN
server/output/1/fashion2/inner_output/prediction_fashion2_origin0-NEB1.h.pkl


+ 0 - 61
server/output/1/fashion2/metrics_result/fashion2_D_MAD_result.csv

@@ -1,61 +0,0 @@
-Mutation-Backend-Pair,Inconsistency Score
-fashion2_origin0.h_tensorflow_mxnet_input0,2.789349491649773e-05
-fashion2_origin0.h_tensorflow_mxnet_input1,2.0714646780106705e-06
-fashion2_origin0.h_tensorflow_mxnet_input2,1.3693011169380043e-06
-fashion2_origin0.h_tensorflow_mxnet_input3,3.507439600980433e-07
-fashion2_origin0.h_tensorflow_mxnet_input4,7.013139224909537e-07
-fashion2_origin0.h_tensorflow_mxnet_input5,0.0011009954614564776
-fashion2_origin0.h_tensorflow_mxnet_input6,1.8905183196693542e-06
-fashion2_origin0.h_tensorflow_mxnet_input7,8.76466219779104e-06
-fashion2_origin0.h_tensorflow_mxnet_input8,3.5046812172367936e-06
-fashion2_origin0.h_tensorflow_mxnet_input9,6.812222181906691e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input0,9.716324029795942e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input1,5.416876774688717e-06
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input2,5.91980351600796e-05
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input3,4.409097982716048e-06
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input4,6.377923256195572e-08
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input5,3.4024094475171296e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input6,7.300808420040994e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input7,6.610469540646591e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input8,5.993259151182428e-07
-fashion2_origin0-NEB1.h_tensorflow_mxnet_input9,1.1328842930424798e-07
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input0,2.789349491649773e-05
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input1,2.0714646780106705e-06
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input2,1.3693011169380043e-06
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input3,3.507439600980433e-07
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input4,7.013139224909537e-07
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input5,0.0011009954614564776
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input6,1.8905183196693542e-06
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input7,8.76466219779104e-06
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input8,3.5046812172367936e-06
-fashion2_origin0-ARep1.h_tensorflow_mxnet_input9,6.812222181906691e-07
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input0,2.789349491649773e-05
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input1,2.0714646780106705e-06
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input2,1.3693011169380043e-06
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input3,3.507439600980433e-07
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input4,7.013139224909537e-07
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input5,0.0011009954614564776
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input6,1.8905183196693542e-06
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input7,8.76466219779104e-06
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input8,3.5046812172367936e-06
-fashion2_origin0-ARep2.h_tensorflow_mxnet_input9,6.812222181906691e-07
-fashion2_origin0-LR1.h_tensorflow_mxnet_input0,2.1494726354376326e-07
-fashion2_origin0-LR1.h_tensorflow_mxnet_input1,1.0246135389024857e-06
-fashion2_origin0-LR1.h_tensorflow_mxnet_input2,5.563522790907882e-06
-fashion2_origin0-LR1.h_tensorflow_mxnet_input3,2.2931722298835666e-07
-fashion2_origin0-LR1.h_tensorflow_mxnet_input4,6.707047646159481e-07
-fashion2_origin0-LR1.h_tensorflow_mxnet_input5,0.0020074336789548397
-fashion2_origin0-LR1.h_tensorflow_mxnet_input6,2.3664529180678073e-06
-fashion2_origin0-LR1.h_tensorflow_mxnet_input7,2.4270579501717293e-07
-fashion2_origin0-LR1.h_tensorflow_mxnet_input8,6.093952470109798e-05
-fashion2_origin0-LR1.h_tensorflow_mxnet_input9,1.2965877260739944e-07
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input0,4.190492575162352e-08
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input1,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input2,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input3,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input4,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input5,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input6,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input7,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input8,0.0
-fashion2_origin0-LR1-LA1.h_tensorflow_mxnet_input9,0.0

BIN
server/output/1/fashion2/mut_model/fashion2_origin0-ARep1.hdf5res.npy


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-ARep2.hdf5


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-ARep2.hdf5res.npy


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-LR1-LA1.hdf5


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-LR1-LA1.hdf5res.npy


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-LR1.hdf5


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-LR1.hdf5res.npy


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-MLA1.hdf5res.npy


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-NEB1.hdf5


BIN
server/output/1/fashion2/mut_model/fashion2_origin0-NEB1.hdf5res.npy


+ 0 - 5
server/output/1/fashion2/mutant_history.txt

@@ -1,5 +0,0 @@
-fashion2_origin0-NEB1.hdf5
-fashion2_origin0-ARep1.hdf5
-fashion2_origin0-ARep2.hdf5
-fashion2_origin0-LR1.hdf5
-fashion2_origin0-LR1-LA1.hdf5

+ 0 - 74
server/output/1/fashion2/mxnet.json

@@ -1,74 +0,0 @@
-[
-    {
-        "model": "fashion2",
-        "method": "origin0",
-        "result": {
-            "Losses": 0.277938068844378,
-            "Accuracy": 0.9009915851056576,
-            "MemoryInfoList": 0.4459855556488037
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0",
-        "result": {
-            "Losses": 0.2785839820280671,
-            "Accuracy": 0.901329904794693,
-            "MemoryInfoList": 0.7526042461395264
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0",
-        "result": {
-            "Losses": 0.2735654469579458,
-            "Accuracy": 0.9050339907407761,
-            "MemoryInfoList": 0.8557529449462891
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-NEB1",
-        "result": {
-            "Losses": 0.3057802524417639,
-            "Accuracy": 0.89111328125,
-            "MemoryInfoList": 0.8596644401550293
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-ARep1",
-        "result": {
-            "Losses": 0.2746584555134177,
-            "Accuracy": 0.9045175388455391,
-            "MemoryInfoList": 0.8402256965637207
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-ARep2",
-        "result": {
-            "Losses": 0.27433568704873323,
-            "Accuracy": 0.9029400162398815,
-            "MemoryInfoList": 0.8651509284973145
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-LR1",
-        "result": {
-            "Losses": 0.3905642945319414,
-            "Accuracy": 0.8800189681351185,
-            "MemoryInfoList": 0.8215579986572266
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-LR1-LA1",
-        "result": {
-            "Losses": 1.9164182916283607,
-            "Accuracy": 0.509122408926487,
-            "MemoryInfoList": 0.8505094051361084
-        }
-    }
-]

+ 0 - 65
server/output/1/fashion2/tensorflow.json

@@ -1,65 +0,0 @@
-[
-    {
-        "model": "fashion2",
-        "method": "origin0",
-        "result": {
-            "Losses": 0.2787128910422325,
-            "Accuracy": 0.9072865433990955,
-            "MemoryInfoList": 0.8984525203704834
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0",
-        "result": {
-            "Losses": 0.27523318585008383,
-            "Accuracy": 0.9036630503833294,
-            "MemoryInfoList": 0.763070821762085
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-NEB1",
-        "result": {
-            "Losses": 0.30588953476399183,
-            "Accuracy": 0.8904231153428555,
-            "MemoryInfoList": 0.7484502792358398
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-ARep1",
-        "result": {
-            "Losses": 0.2769636195152998,
-            "Accuracy": 0.9029916599392891,
-            "MemoryInfoList": 0.7493219375610352
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-ARep2",
-        "result": {
-            "Losses": 0.276142087765038,
-            "Accuracy": 0.9037710353732109,
-            "MemoryInfoList": 0.7656466960906982
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-LR1",
-        "result": {
-            "Losses": 0.3914049342274666,
-            "Accuracy": 0.8786574117839336,
-            "MemoryInfoList": 0.7475287914276123
-        }
-    },
-    {
-        "model": "fashion2",
-        "method": "origin0-LR1-LA1",
-        "result": {
-            "Losses": 1.9165625423192978,
-            "Accuracy": 0.5086904689669609,
-            "MemoryInfoList": 0.8675270080566406
-        }
-    }
-]

BIN
server/output/1/fashion2/mut_model/fashion2_origin0-ARep1.hdf5 → server/output/task_2024-07-19T14:45:07_1/fashion2/crash/fashion2_origin0-ARem1.hdf5


BIN
server/output/task_2024-07-19T14:45:07_1/fashion2/fashion2_lemon_results.pkl


BIN
server/output/task_2024-07-19T14:45:07_1/fashion2/inner_output/prediction_fashion2_origin0-WS1.h.pkl


+ 0 - 0
server/output/1/fashion2/inner_output/prediction_fashion2_origin0.h.pkl → server/output/task_2024-07-19T14:45:07_1/fashion2/inner_output/prediction_fashion2_origin0.h.pkl


+ 21 - 0
server/output/task_2024-07-19T14:45:07_1/fashion2/metrics_result/fashion2_D_MAD_result.csv

@@ -0,0 +1,21 @@
+Mutation-Backend-Pair,Inconsistency Score
+fashion2_origin0.h_tensorflow_mxnet_input0,2.789349491649773e-05
+fashion2_origin0.h_tensorflow_mxnet_input1,2.0714646780106705e-06
+fashion2_origin0.h_tensorflow_mxnet_input2,1.3693011169380043e-06
+fashion2_origin0.h_tensorflow_mxnet_input3,3.507439600980433e-07
+fashion2_origin0.h_tensorflow_mxnet_input4,7.013139224909537e-07
+fashion2_origin0.h_tensorflow_mxnet_input5,0.0011009954614564776
+fashion2_origin0.h_tensorflow_mxnet_input6,1.8905183196693542e-06
+fashion2_origin0.h_tensorflow_mxnet_input7,8.76466219779104e-06
+fashion2_origin0.h_tensorflow_mxnet_input8,3.5046812172367936e-06
+fashion2_origin0.h_tensorflow_mxnet_input9,6.812222181906691e-07
+fashion2_origin0-WS1.h_tensorflow_mxnet_input0,4.528114914137404e-06
+fashion2_origin0-WS1.h_tensorflow_mxnet_input1,1.0692201612982899e-07
+fashion2_origin0-WS1.h_tensorflow_mxnet_input2,1.5629968856956111e-06
+fashion2_origin0-WS1.h_tensorflow_mxnet_input3,1.4258374903874937e-05
+fashion2_origin0-WS1.h_tensorflow_mxnet_input4,2.776163796625042e-07
+fashion2_origin0-WS1.h_tensorflow_mxnet_input5,2.1187070160522126e-06
+fashion2_origin0-WS1.h_tensorflow_mxnet_input6,2.3251509162491857e-07
+fashion2_origin0-WS1.h_tensorflow_mxnet_input7,0.00023461863747797906
+fashion2_origin0-WS1.h_tensorflow_mxnet_input8,3.2030555985329556e-07
+fashion2_origin0-WS1.h_tensorflow_mxnet_input9,4.5432057049765717e-07

BIN
server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-ARem1.hdf5res.npy


BIN
server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-WS1.hdf5


BIN
server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0-WS1.hdf5res.npy


+ 0 - 0
server/output/1/fashion2/mut_model/fashion2_origin0.hdf5 → server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0.hdf5


+ 0 - 0
server/output/1/fashion2/mut_model/fashion2_origin0.hdf5res.npy → server/output/task_2024-07-19T14:45:07_1/fashion2/mut_model/fashion2_origin0.hdf5res.npy


+ 1 - 0
server/output/task_2024-07-19T14:45:07_1/fashion2/mutant_history.txt

@@ -0,0 +1 @@
+fashion2_origin0-WS1.hdf5

+ 7 - 7
server/output/1/fashion2/mutator_history.csv → server/output/task_2024-07-19T14:45:07_1/fashion2/mutator_history.csv

@@ -1,13 +1,13 @@
 Name,Success,Invalid,Total
-WS,0,0,0
+WS,0,0,1
 GF,0,0,0
-NEB,0,0,1
+NEB,0,0,0
 NAI,0,0,0
 NS,0,0,0
-ARem,0,0,0
-ARep,0,0,2
-LA,0,0,1
+ARem,0,0,1
+ARep,0,0,0
+LA,0,0,0
 LC,0,0,0
-LR,1,0,1
+LR,0,0,0
 LS,0,0,0
-MLA,0,0,1
+MLA,0,0,0

+ 20 - 0
server/output/task_2024-07-19T14:45:07_1/fashion2/mxnet.json

@@ -0,0 +1,20 @@
+[
+    {
+        "model": "fashion2",
+        "method": "origin0",
+        "result": {
+            "Losses": 0.2729402296245098,
+            "Accuracy": 0.903226412832737,
+            "MemoryInfoList": 0.9190187454223633
+        }
+    },
+    {
+        "model": "fashion2",
+        "method": "origin0-WS1",
+        "result": {
+            "Losses": 0.4089081399142742,
+            "Accuracy": 0.8602341897785664,
+            "MemoryInfoList": 0.811927080154419
+        }
+    }
+]

+ 20 - 0
server/output/task_2024-07-19T14:45:07_1/fashion2/tensorflow.json

@@ -0,0 +1,20 @@
+[
+    {
+        "model": "fashion2",
+        "method": "origin0",
+        "result": {
+            "Losses": 0.27484310790896416,
+            "Accuracy": 0.904052734375,
+            "MemoryInfoList": 0.7509610652923584
+        }
+    },
+    {
+        "model": "fashion2",
+        "method": "origin0-WS1",
+        "result": {
+            "Losses": 0.4064286407083273,
+            "Accuracy": 0.8588679395616055,
+            "MemoryInfoList": 0.70198655128479
+        }
+    }
+]

+ 21 - 19
server/tool.py

@@ -27,18 +27,18 @@ def mock(exp: str, root_dir: str, output_dir: str, mutate_num: int, config_name:
     return data
 
 
-result_num = 0
+# result_num = 0
 def runtool(
-    exp: str, mutate_num: int
+    exp: str, mutate_num: int,task_id:str
 ):
     global result_num
     config_name = "demo.conf"
     base_dir = os.path.dirname(os.path.abspath(__file__))
     print(base_dir)
     
-    result_num = ( result_num + 1 ) % 5
+    # result_num = ( result_num + 1 ) % 5
     
-    output_dir = os.path.join(base_dir, "output", str(result_num))
+    output_dir = os.path.join(base_dir, "output", task_id)
     
     if os.path.exists(output_dir):
         print("remove output_dir:", output_dir)
@@ -56,22 +56,24 @@ def runtool(
     print(target_dir)
     sys.path.append(target_dir)
     
+    # 执行任务
     # TODO: 正式时需要注释lemon_process(exp, root_dir, output_dir, mutate_num, config_name)
+    lemon_process(exp, root_dir, output_dir, mutate_num, config_name)
+    # real_output_dir = os.path.join(output_dir, exp)
     
-    real_output_dir = os.path.join(output_dir, exp)
+    # mxnet_json = os.path.join(real_output_dir, "mxnet.json")
+    # with open(
+    #     mxnet_json, "r"
+    # ) as file1:  # tensorflow.json
+    #     data1 = json.load(file1)
     
-    mxnet_json = os.path.join(real_output_dir, "mxnet.json")
-    with open(
-        mxnet_json, "r"
-    ) as file1:  # tensorflow.json
-        data1 = json.load(file1)
-    
-    tensorflow_json = os.path.join(real_output_dir, "tensorflow.json")
-    with open(tensorflow_json, "r") as file2:
-        data2 = json.load(file2)
+    # tensorflow_json = os.path.join(real_output_dir, "tensorflow.json")
+    # with open(tensorflow_json, "r") as file2:
+    #     data2 = json.load(file2)
         
-    combined_data = {
-        "mxnet": data1,
-        "tensorflow": data2
-    }
-    return combined_data
+    # combined_data = {
+    #     "mxnet": data1,
+    #     "tensorflow": data2
+    # }
+    # return combined_data
+    return "success"