This guide provides detailed steps for fully fine-tuning the AVLLM model using the LLaMA Factory framework.
Follow these instructions to set up your environment, prepare your model and datasets, and perform fine-tuning and evaluations.
-
Clone the LLaMA Factory Repository
Clone the repository to your home directory:
git clone https://github.com/hiyouga/LLaMA-Factory.git
-
Create and Activate a Conda Environment
Create a new Conda environment named AVLLM and activate it:
conda create -n AVLLM python=3.10 conda activate AVLLM
-
Install Dependencies
Navigate to the LLaMA-Factory directory and install the required dependencies:
cd LLaMA-Factory pip install -r requirements.txt
-
Download the Model
Download the TinyLlama model from Hugging Face and place it in the
model_pathdirectory:- Model URL: TinyLlama-1.1B-intermediate-step-1431k-3T
-
Prepare the Datasets
Download your fine-tuning dataset
AVLLM_train.jsonand testing datasetAVLLM_test.json. Load these datasets into theLLaMA-Factory/datadirectory and update thedataset_info.jsonfile to include:"AVLLM-train": { "file_name": "AVLLM_train.json" }, "AVLLM-test": { "file_name": "AVLLM_test.json" }
-
Configure the Fine-Tuning Script
In the
llama_factorydirectory, create or modify thefull-ft.shscript. -
Configure DeepSpeed
Create or modify thedeepspeed.jsonfile. -
Execute the Fine-Tuning Script
Run the fine-tuning script:sh full-ft.sh
-
Install TextAttack
Install TextAttack for generating adversarial examples:pip install textattack
-
Generate Adversarial Examples
Use the following command to generate adversarial examples for evaluation:sh generate_example.sh
-
Prepare Evaluation Data
-Store the generated adversarial examples as
attack_example.csv.
-Process this file using data_processing.py to format it for AVLLM inference.
-Load the resultingevaluation.jsoninto theLLaMA-Factory/data directoryand updatedataset_info.json:"AVLLM-evaluation": { "file_name": "evaluation.json" }
-
Run Inference and Evaluation
Use the
predict.shscript for inference, and then evaluate the ASR withevaluation.py.sh predict.sh python evaluation.py
- Add Custom Module
Place your module intextattack/constraints/semantics/tinyllama.pyand updatetextattack/attack_args.pyto include your module in theCONSTRAINT_CLASS_NAMES:"tinyllama": "textattack.constraints.semantics.Tinyllama"
- API Call Setup
Set up an API call by runningserver.pyand adjust the address intinyllama.pyaccordingly.python server.py
- Run Attack Command
Execute the following command to run your attack module:sh patch.sh
If you find this paper useful, please consider staring 🌟 this repo and citing 📑 our paper:
@inproceedings{zhou2024evaluating,
title={Evaluating the validity of word-level adversarial attacks with large language models},
author={Zhou, Huichi and Wang, Zhaoyang and Wang, Hongtao and Chen, Dongping and Mu, Wenhan and Zhang, Fangyuan},
booktitle={Findings of the Association for Computational Linguistics ACL 2024},
pages={4902--4922},
year={2024}
}