Spaces:
Runtime error
Runtime error
File size: 5,457 Bytes
c4ef4f9 5f30d29 c4ef4f9 bb690a1 c4ef4f9 5f30d29 bb690a1 5f30d29 c4ef4f9 bb690a1 05e4fe8 c4ef4f9 bb690a1 c4ef4f9 bb690a1 5f30d29 bb690a1 04e6374 bb690a1 7d9266c c586c13 768ece9 bb690a1 c4ef4f9 bb690a1 c4ef4f9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# import imp
from email.policy import default
import streamlit as st
import pandas as pd
import numpy as np
import time
from config import update_device_func
from parse_code import parse_base_code
# title
st.title("Exp Command Generator")
# experiment mode
# exp_mode = st.sidebar.selectbox("Select Experiment Mode", ["OneExpOnecard", "MultipleExpOnecard"],key="MultipleExpOnecard")
## 检查框
debug = st.sidebar.checkbox("Debug: 选择则会串行地执行命令", value=True)
# st.sidebar.write(f"checkbox的值是{res}")
# setup = st.sidebar.text_area("Some setup of env at beginning.", """cd $(dirname $(dirname $0))
# source activate xai
# export PYTHONPATH=${PYTHONPATH}:/Users/apple/Desktop/workspace/research_project/attention:/mnt/yixin/:/home/yila22/prj""")
# exp_hyper = st.sidebar.text_area("Hyperparameters", """exp_name="debug-adv-training-emotion"
# dataset=emotion
# n_epoch=3
# K=3
# encoder=bert
# lambda_1=1
# lambda_2=1
# x_pgd_radius=0.01
# pgd_radius=0.001
# seed=2
# bsize=8
# lr=5e-5""")
## gpu 相关参数
gpu_list = st.sidebar.multiselect("multi select", range(10), [0,1,2,3,4,])
# print(gpu_list)
allow_gpu_memory_threshold_default=5000
gpu_threshold_default=90
total_gpu_memory = st.sidebar.number_input("单卡总容量", value=24564, min_value=0, max_value=30000, step=1000)
max_gpu_memory_gap = st.sidebar.number_input("最小单卡剩余容量", value=allow_gpu_memory_threshold_default, min_value=0, max_value=total_gpu_memory, step=500)
max_gpu_utilization = st.sidebar.number_input("最大单卡利用率", value=gpu_threshold_default, min_value=0, max_value=100, step=10)
sleep_time_after_loading_task= st.sidebar.number_input("加载任务后等待秒数", value=10, min_value=0,step=5)
# all_full_sleep_time = st.sidebar.number_input("全满之后等待秒数", value=20, min_value=0,step=5)
username = st.sidebar.text_input("用户名", value="yila22")
cpu_max_utility = st.sidebar.number_input("cpu最大利用率", value=77, min_value=0, max_value=100, step=1)
memory_max_utility = st.sidebar.number_input("内存最大利用率", value=80, min_value=0, max_value=100, step=1)
constrain_total = st.sidebar.checkbox("限制总资源", value=True)
constrain_mine = st.sidebar.checkbox("限制我的资源", value=False)
constrain_rate = st.sidebar.number_input("限制率", value=2, min_value=1, max_value=10, step=1)
# username_mine=root
# max_gpu_utilization=90
# total_gpu_memory=24564
# max_gpu_memory_gap=5000
# available_devices=( 0 1 2 3 4 5 6 7 8 9 )
# current_device_idx=-1
# sleeptime=30
# cpu_mean_max=77
# memory_rate_max=80
# constrain_total=true
# constrain_mine=false
# constrain_rate=2
gpu_list = " ".join([str(i) for i in gpu_list])
setup_for_gpu_utility = f"""
username={username}
# available_devices=( 0 1 2 3 4 )
# available_devices=( 5 6 7 8 9 )
# available_devices=( 0 1 2 3 4 5 6 7 8 9 )
available_devices=( {gpu_list} )
max_gpu_utilization={max_gpu_utilization}
total_gpu_memory={total_gpu_memory}
max_gpu_memory_gap={max_gpu_memory_gap}
current_device_idx=-1
sleeptime={sleep_time_after_loading_task}
cpu_mean_max={cpu_max_utility}
memory_rate_max={memory_max_utility}
constrain_total={"true" if constrain_total else "false"}
constrain_mine={"true" if constrain_mine else "false"}
constrain_rate={constrain_rate}
"""
base_code = st.text_area("Base Code", """##### setup
export CUDA_VISIBLE_DEVICES=2
source activate /data/yixin/anaconda/mib
exp_name="single_user"
#####
##### loop
for poison_method in char_basic word_basic sent_basic; do
for dataset_idx in 0 1 2; do
#####
##### main
python single_user.py --dataset_idx $dataset_idx --trigger_size 1 --target 0 \
--loc 0 --batch_size 16 --num_epochs 2 --poison_method $poison_method --lr 5e-5 --pattern 0 --exp_name $exp_name \
--log_wb
#####
#####
done;done;
#####""", height=400)
g = st.button("Generate")
if g:
st.success("Finished")
contents = base_code
gpu_utility = ""
gpu_utility = setup_for_gpu_utility + "\n\n" + update_device_func
new_code = parse_base_code(contents, debug=debug)
# create file for download
timestr = time.strftime("%Y%m%d-%Hh%Mm%Ss")
import os
os.makedirs(f"./res/{timestr}", exist_ok=True)
filename_script = f"./res/{timestr}/script.sh"
with open(filename_script, "w") as f:
f.write(new_code)
filename_config = f"./res/{timestr}/gpu_utility.sh"
with open(filename_config, "w") as f:
f.write(gpu_utility)
# zip them into one file
# import shutil
# shutil.make_archive(f"./res/{timestr}", 'zip', f"./res/{timestr}")
# st.download_button(
# label="Download zip",
# data=f"./res/{timestr}.zip",
# file_name=f"{timestr}.zip",
# mime="application/zip",
# )
st.download_button(
label="Download script",
data=new_code,
file_name=filename_script,
mime="text/plain",
)
# after clicking i don't want the website to refresh
st.download_button(
label="Download gpu_utility.sh",
data=gpu_utility,
file_name=filename_config,
mime="text/plain",
)
# st.markdown(f"### [Download script](./{filename_script})")
# st.markdown(f"### [Download gpu_utility.sh](P{filename_config})")
st.markdown("## script.sh")
st.code(new_code, language="shell")
st.markdown("## gpu_utility.sh")
st.code(gpu_utility, language="shell")
|