# Fine-Tuning Guide

- This project has undergone fine-tuning not only on mental health datasets but also on self-awareness, and here is the detailed guide for fine-tuning.

## I. Fine-Tuning Based on Xtuner πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰

### Environment Setup

```markdown
datasets==2.16.1
deepspeed==0.13.1
einops==0.7.0
flash_attn==2.5.0
mmengine==0.10.2
openxlab==0.0.34
peft==0.7.1
sentencepiece==0.1.99
torch==2.1.2
transformers==4.36.2
xtuner==0.1.11
```

You can also install them all at once by

```bash
cd xtuner_config/
pip3 install -r requirements.txt
```

---

### Fine-Tuning

```bash
cd xtuner_config/
xtuner train internlm2_7b_chat_qlora_e3.py --deepspeed deepspeed_zero2
```

---

### Convert the Obtained PTH Model to a HuggingFace Model

**That is: Generate the Adapter folder**

```bash
cd xtuner_config/
mkdir hf
export MKL_SERVICE_FORCE_INTEL=1

xtuner convert pth_to_hf internlm2_7b_chat_qlora_e3.py ./work_dirs/internlm_chat_7b_qlora_oasst1_e3_copy/epoch_3.pth ./hf
```

---

### Merge the HuggingFace Adapter with the Large Language Model

```bash
xtuner convert merge ./internlm2-chat-7b ./hf ./merged --max-shard-size 2GB
# xtuner convert merge \
#     ${NAME_OR_PATH_TO_LLM} \
#     ${NAME_OR_PATH_TO_ADAPTER} \
#     ${SAVE_PATH} \
#     --max-shard-size 2GB
```

---

### Testing

```
cd demo/
python cli_internlm2.py
```

---

## II. Fine-Tuning Based on TransformersπŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰

- Please refer to the [ChatGLM3-6b lora fine-tuning guide](ChatGLM3-6b-ft.md).

---

## Other

Feel free to give [xtuner](https://github.com/InternLM/xtuner) and [EmoLLM](https://github.com/aJupyter/EmoLLM) a star~

πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰