-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the DL-SAFE wiki.
Este guia descreve a instalação da ferramenta DL-SAFE para um computador com sistema operacional Ubuntu 22.04. Todos os comandos devem ser executados como root; para executar comandos como root, execute o comando abaixo e insira a senha solicitada:
sudo su
Primeiramente, instale o programa necessário para clonar a ferramenta:
apt update -y && apt upgrade -y
apt install git -y
A seguir, baixe o código disponível no Github e adicione as permissões necessárias para a execução do instalador:
cd ~
git clone https://github.com/GTA-UFRJ/neuralnetwork-IoT
cd neuralnetwork-IoT/
chmod +x install.sh
Por fim, execute o instalador:
./install.sh
O instalador baixa datasets reduzidos para permitir testar rapidamente a capacidade da ferramenta na criação de modelos. Para baixar os datasets utilizados na criação dos modelos presentes no diretório "models", basta realizar os comandos abaixo; para realizar o treinamento com estes datasets, é necessário alterar os valores de "train_dataset_name" e "test_dataset_name" no arquivo de configurações.
cd dataset/
wget https://gta.ufrj.br/~chagas/UNSW_2018_IoT_Botnet_Full5pc_Train.csv
wget https://gta.ufrj.br/~chagas/UNSW_2018_IoT_Botnet_Full5pc_Test.csv
cd ..
O arquivo "config.txt" contém as configurações utilizadas durante a execução da ferramenta. As configurações padrões podem ser utilizadas para execução da ferramenta quando instalada de acordo com este guia; segue abaixo uma descrição detalhada de todas as variáveis que podem ser modificadas no arquivo de configurações:
-
dataset_folder: Diretório contendo os datasets de treino e teste. Valor padrão: /root/neuralnetwork-IoT/dataset/
-
train_dataset_name: Arquivo utilizado como dataset durante o treinamento dos modelos. Valor padrão: UNSW_2018_IoT_Botnet_Full5pc_Train.csv
-
test_dataset_name: Arquivo utilizado como dataset durante o teste dos modelos. Valor padrão: UNSW_2018_IoT_Botnet_Full5pc_Test.csv
-
lr: Valores de taxa de aprendizado utilizados durante a otimização por busca em grade. As taxas devem estar listadas entre colchetes e separadas por vírgulas, sem espaços entre cada taxa. Valor padrão: [1e-3,5e-4,1e-4]
-
batch_size: Valores de tamanho de lote utilizados durante a otimização por busca em grade. Os tamanhos devem estar listados entre colchetes e separados por vírgulas, sem espaços entre cada tamanho. Valor padrão: [32,64,100,128,1000]
-
epochs: Valores de número de épocas utilizados durante a otimização por busca em grade. Os números devem estar listados entre colchetes e separados por vírgulas, sem espaços entre cada número. Valor padrão: [5,10,100]
-
architecture: Arquiteturas de redes neurais avaliadas durante a otimização por busca em grade. As arquiteturas devem estar listadas entre colchetes e separadas por vírgulas, sem espaço entre cada arquitetura. As arquiteturas disponíveis são: MLP1, MLP2, RNN1, RNN2, RNND, LSTM1, LSTMD e BLSTM1. Valor padrão: [MLP1,MLP2,RNN1,RNN2,RNND,LSTM1,LSTMD,BLSTM1]
-
num_cpu: Número de núcleos de CPU utilizados durante o treinamento dos modelos. Valor padrão: 4
-
num_gpu: Número de GPUs utilizadas durante o treinamento dos modelos. Este valor deve ser modificado somente caso deseje-se realizar o treinamento utilizando CUDA. Valor padrão: 0
-
quantize: Variável booleana que determina se PTQ (Post-Training Quantization) será aplicada ao modelo selecionado durante a classificação. Valor padrão: False
-
model_location: Diretório contendo os modelos de classificação. Valor padrão: /root/neuralnetwork-IoT/models/
-
architecture: Arquitetura de rede neural selecionada para realizar a classificação. As arquiteturas disponíveis são: MLP1, MLP2, RNN1, RNN2, RNND, LSTM1, LSTMD e BLSTM1. Valor padrão: RNN1
A ferramenta possui 2 modos de execução: treinamento e avaliação de modelos, e classificação em tempo real. Todos os comandos devem ser executados como root; para executar comandos como root, execute o comando abaixo e insira a senha solicitada:
sudo su
Para realizar o treinamento de modelos de classificação, execute no diretório da ferramenta:
python3 model_training.py > tuning_train_records.txt
O treinamento gera um arquivo denominado "tuning_train_records.txt" no diretório da ferramenta: este arquivo contém os principais resultados obtidos durante o treinamento e validação dos modelos. Além deste arquivo, os resultados de teste para cada arquitetura avaliada durante o treinamento, assim como o respectivo modelo obtido durante o treinamento, estão disponíveis no diretório /root/ray_results/
. Cada combinação de hiperparâmetros possui um diretório próprio; dentro de cada diretório, o modelo obtido está salvo como "model_tmp.pth", e os resultados de teste estão armazenados em "tuning_test_records.txt".
Para executar a classificação em tempo real, execute no diretório da ferramenta:
./processing.sh <janela_de_tempo>
O comando recebe como argumento opcional a janela de tempo utilizada na classificação, em segundos. Caso nenhum argumento seja passado, a ferramenta utiliza a janela de tempo padrão de 5 segundos. Os resultados de classificação são salvos no arquivo "detection_results.csv".