File size: 4,445 Bytes
5385485
 
345223d
5385485
 
bcfbc38
 
5385485
bcfbc38
 
 
 
5385485
bcfbc38
 
5385485
bcfbc38
5385485
bcfbc38
 
 
5385485
bcfbc38
5385485
bcfbc38
 
 
 
5385485
bcfbc38
 
5385485
bcfbc38
5385485
bcfbc38
 
5385485
bcfbc38
 
5385485
bcfbc38
 
5385485
bcfbc38
 
 
5385485
bcfbc38
 
5385485
bcfbc38
 
 
 
 
 
 
5385485
bcfbc38
5385485
bcfbc38
 
 
5385485
bcfbc38
5385485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcfbc38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
library_name: peft
base_model: DAMO-NLP-MT/polylm-1.7b
---

# [Reproducing] Stanford Alpaca: An Instruction-following LLaMA Model
This is the repo for reproducing [Stanford Alpaca : An Instruction-following LLaMA Model](https://github.com/tatsu-lab/stanford_alpaca/blob/main/README.md). We finetune some of LlaMa2-based large language model using medical QA dataset. The repo contains:

- The [5K data](#dataset) conversations between patients and physicians used for fine-tuning the model.
- The code for [Preparation data](#data-preparation).
- The code for [Fine Tuning the Model](#fine-tuning).
- The link for [Testing the Model](#testing-the-model).

## Dataset
We using the 5k generated dataset by [Chat Doctor](https://github.com/Kent0n-Li/ChatDoctor). The dataset is a generated conversations between patients and physicians from ChatGPT GenMedGPT-5k and disease database. Dataset also currated and modified to Indonesian Language Based. 

[`GenMedGPT-5k-id.json`](https://github.com/gilangcy/stanford-alpaca/blob/main/GenMedGPT-5k-id.json) contains 5K instruction-following data we used for fine-tuning the LlaMa model. This JSON file is a list of dictionaries, each dictionary contains the following fields:

- `instruction`: `str`, describes the task the model should perform. Each of the 52K instructions is unique.
- `input`: `str`, optional context or input for the task. For example, when the instruction is "Summarize the following article", the input is the article. Around 40% of the examples have an input.
- `output`: `str`, the answer to the instruction as generated by `text-davinci-003`.

If you're interested in fine-tuning with your own data, it's essential to adhere to the default prompt format that the model used during its pre-training phase. The prompt for LlaMa 2 is structured similarly to this:

```
<s>[INST] <<SYS>>
{{ instruction }}
<</SYS>>

{{ input }} [/INST] {{ output }} </s>
```

Meanwhile, the prompt for PolyLM and InternLM (adapted to Indonesian) is structured similarly to this:

```
Di bawah ini adalah instruksi yang menjelaskan tugas, dipasangkan dengan masukan yang memberikan konteks lebih lanjut. Tulis tanggapan yang melengkapi permintaan dengan tepat.

Instruksi:
{instruction}

Masukan:
{input}

Tanggapan:
{output}
```

## Finetuning the Model
We fine-tune our models based on the step from Stanford Alpaca. We choose to train some LLama-based model. The model that we finetune are PolyLM-1.7B, LlaMa-2-7B, InternLM-7B with the following hyperparameters:

| Hyperparameter | PolyLM-1.7B | LLaMA-7B | InternLM-7B |
|----------------|------------ |----------|-------------|
| Batch size     | 128         | 128      | 128         |
| Learning rate  | 3e-4        | 3e-4     | 3e-4        |
| Epochs         | 3           | 3        | 3           |
| Max length     | 256         | 256      | 256         |
| Weight decay   | 0           | 0        | 0           |

To reproduce our fine-tuning runs for LLaMA, first install the requirements

```
pip install -r requirements.txt
```

The code for finetuning is available at [`fine-tuning.ipynb`](https://github.com/gilangcy/stanford-alpaca/blob/main/fine-tuning.ipynb) with four sections of pre-preocessing data, fine-tuning with LlaMa 2, fine-tuning with PolyLM, and fine-tuning with InternLM.

## Training procedure


The following `bitsandbytes` quantization config was used during training:
- quant_method: bitsandbytes
- load_in_8bit: True
- load_in_4bit: False
- llm_int8_threshold: 6.0
- llm_int8_skip_modules: None
- llm_int8_enable_fp32_cpu_offload: False
- llm_int8_has_fp16_weight: False
- bnb_4bit_quant_type: fp4
- bnb_4bit_use_double_quant: False
- bnb_4bit_compute_dtype: float32

### Framework versions


- PEFT 0.6.0.dev0


## Testing the Model 

These are link for test the fine-tuned model :

1. [PolyLM-1.7B](https://huggingface.co/spaces/dennyaw/polylm1.7b)
2. [LlaMa-2-7B](https://huggingface.co/spaces/dennyaw/Llama-2-7b-finetuned)
3. [InternLM-7B](https://huggingface.co/spaces/dennyaw/internlm-7b-finetuned)

### Authors

All interns below contributed equally and the order is determined by random draw.

- [Denny Andriana Wahyu](https://www.linkedin.com/in/denny-aw/)
- [Fadli Aulawi Al Ghiffari](https://www.linkedin.com/in/fadli-aulawi-al-ghiffari-9b4990148/)
- [Gilang Catur Yudishtira](https://www.linkedin.com/in/gilangcy/)

All advised by [Firqa Aqilla Noor Arasyi](https://www.linkedin.com/in/firqaana/)