OllieStanley commited on
Commit
553fc24
1 Parent(s): 8fddd97

New instructions

Browse files
Files changed (1) hide show
  1. README.md +74 -22
README.md CHANGED
@@ -24,63 +24,115 @@ ea0405cdb5bc638fee12de614f729ebc consolidated.03.pth
24
  4babdbd05b8923226a9e9622492054b6 params.json
25
  ```
26
 
27
- These can be converted to HuggingFace Transformers-compatible weights using the script available [here](https://github.com/huggingface/transformers/blob/28f26c107b4a1c5c7e32ed4d9575622da0627a40/src/transformers/models/llama/convert_llama_weights_to_hf.py).
28
 
29
- **Important**: It was tested with git version transformers 4.28.0.dev0 (git hash: **28f26c107b4a1c5c7e32ed4d9575622da0627a40**). Make sure the package tokenizers 0.13.3 is installed. Use of different versions may result in broken outputs.
30
 
31
  ```
32
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python python convert_llama_weights_to_hf.py --input_dir ~/llama/ --output_dir ~/llama30b_hf/ --model_size 30B
 
33
  ```
34
 
35
- Run `find -type f -exec md5sum "{}" + > checklist.chk` in the conversion target directory. This should produce a `checklist.chk` with exactly the following content if your files are correct:
36
 
37
  ```
38
- d0e13331c103453e9e087d59dcf05432 ./pytorch_model-00001-of-00007.bin
39
- 29aae4d31a0a4fe6906353001341d493 ./pytorch_model-00002-of-00007.bin
40
- b40838eb4e68e087b15b3d653ca1f5d7 ./pytorch_model-00003-of-00007.bin
41
- f845ecc481cb92b8a0586c2ce288b828 ./pytorch_model-00004-of-00007.bin
42
- f3b13d089840e6caf22cd6dd05b77ef0 ./pytorch_model-00005-of-00007.bin
43
- 12e0d2d7a9c00c4237b1b0143c48a05e ./pytorch_model-00007-of-00007.bin
44
- 1348f7c8bb3ee4408b69305a10bdfafb ./pytorch_model-00006-of-00007.bin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  aee09e21813368c49baaece120125ae3 ./generation_config.json
 
 
46
  eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
 
47
  598538f18fed1877b41f77de034c0c8a ./config.json
48
  fdb311c39b8659a5d5c1991339bafc09 ./tokenizer.json
49
- b77e99aa2ddc3df500c2b2dc4455a6af ./pytorch_model.bin.index.json
50
  edd1a5897748864768b1fab645b31491 ./tokenizer_config.json
51
  6b2e0a735969660e720c27061ef3f3d3 ./special_tokens_map.json
 
52
  ```
53
 
54
- Once you have LLaMa weights in the correct format, you can apply the XOR decoding:
 
 
55
 
56
  ```
57
  python xor_codec.py oasst-sft-6-llama-30b/ oasst-sft-6-llama-30b-xor/ llama30b_hf/
58
  ```
59
 
60
- You should expect to see one warning message during execution:
61
 
62
  `Exception when processing 'added_tokens.json'`
63
 
64
- This is normal. If similar messages appear for other files, something has gone wrong.
65
 
66
- Now run `find -type f -exec md5sum "{}" + > checklist.chk` in the output directory (here `oasst-sft-6-llama-30b`). You should get a file with exactly these contents:
67
 
68
  ```
69
  970e99665d66ba3fad6fdf9b4910acc5 ./pytorch_model-00007-of-00007.bin
70
  659fcb7598dcd22e7d008189ecb2bb42 ./pytorch_model-00003-of-00007.bin
71
  ff6e4cf43ddf02fb5d3960f850af1220 ./pytorch_model-00001-of-00007.bin
72
  27b0dc092f99aa2efaf467b2d8026c3f ./added_tokens.json
73
- aee09e21813368c49baaece120125ae3 ./generation_config.json
74
  740c324ae65b1ec25976643cda79e479 ./pytorch_model-00005-of-00007.bin
75
  f7aefb4c63be2ac512fd905b45295235 ./pytorch_model-00004-of-00007.bin
76
  eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
77
  369df2f0e38bda0d9629a12a77c10dfc ./pytorch_model-00006-of-00007.bin
78
- 27b9c7c8c62db80e92de14724f4950f3 ./config.json
79
- deb33dd4ffc3d2baddcce275a00b7c1b ./tokenizer.json
80
  76d47e4f51a8df1d703c6f594981fcab ./pytorch_model.bin.index.json
81
- ed59bfee4e87b9193fea5897d610ab24 ./tokenizer_config.json
82
- 130f5e690becc2223f59384887c2a505 ./special_tokens_map.json
83
  ae48c4c68e4e171d502dd0896aa19a84 ./pytorch_model-00002-of-00007.bin
84
  ```
85
 
86
- If so you have successfully decoded the weights and should be able to use the model with HuggingFace Transformers.
 
24
  4babdbd05b8923226a9e9622492054b6 params.json
25
  ```
26
 
27
+ **Important: Follow these exact steps to convert your original LLaMa checkpoint to a HuggingFace Transformers-compatible format. If you use the wrong versions of any dependency, you risk ending up with weights which are not compatible with the XOR files.**
28
 
29
+ 1. Create a clean Python **3.10** virtual environment & activate it:
30
 
31
  ```
32
+ python3.10 -m venv xor_venv
33
+ source xor_venv/bin/activate
34
  ```
35
 
36
+ 2. Clone transformers repo and switch to tested version:
37
 
38
  ```
39
+ git clone https://github.com/huggingface/transformers.git
40
+ cd transformers
41
+ git checkout d04ec99bec8a0b432fc03ed60cea9a1a20ebaf3c
42
+ pip install .
43
+ ```
44
+
45
+ 3. Install **exactly** these dependency versions:
46
+
47
+ ```
48
+ pip install torch==1.13.1 accelerate==0.18.0 sentencepiece==0.1.98 protobuf==3.20.1
49
+ ```
50
+
51
+ 4. Check `pip freeze` output:
52
+
53
+ ```
54
+ accelerate==0.18.0
55
+ certifi==2022.12.7
56
+ charset-normalizer==3.1.0
57
+ filelock==3.12.0
58
+ huggingface-hub==0.13.4
59
+ idna==3.4
60
+ numpy==1.24.2
61
+ nvidia-cublas-cu11==11.10.3.66
62
+ nvidia-cuda-nvrtc-cu11==11.7.99
63
+ nvidia-cuda-runtime-cu11==11.7.99
64
+ nvidia-cudnn-cu11==8.5.0.96
65
+ packaging==23.1
66
+ protobuf==3.20.1
67
+ psutil==5.9.5
68
+ PyYAML==6.0
69
+ regex==2023.3.23
70
+ requests==2.28.2
71
+ sentencepiece==0.1.98
72
+ tokenizers==0.13.3
73
+ torch==1.13.1
74
+ tqdm==4.65.0
75
+ transformers @ file:///mnt/data/koepf/transformers
76
+ typing_extensions==4.5.0
77
+ urllib3==1.26.15
78
+ ```
79
+
80
+ 5. While in `transformers` repo root, run HF LLaMA conversion script:
81
+
82
+ ```
83
+ python src/transformers/models/llama/convert_llama_weights_to_hf.py --input_dir <input_path_llama_base> --output_dir <output_path_llama30b_hf> --model_size 30B
84
+ ```
85
+
86
+ 6. Run `find . -type f -exec md5sum "{}" +` in the conversion target directory (`output_dir`). This should produce exactly the following checksums if your files are correct:
87
+
88
+ ```
89
+ 462a2d07f65776f27c0facfa2affb9f9 ./pytorch_model-00007-of-00007.bin
90
+ e1dc8c48a65279fb1fbccff14562e6a3 ./pytorch_model-00003-of-00007.bin
91
+ 9cffb1aeba11b16da84b56abb773d099 ./pytorch_model-00001-of-00007.bin
92
  aee09e21813368c49baaece120125ae3 ./generation_config.json
93
+ 92754d6c6f291819ffc3dfcaf470f541 ./pytorch_model-00005-of-00007.bin
94
+ 3eddc6fc02c0172d38727e5826181adb ./pytorch_model-00004-of-00007.bin
95
  eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
96
+ 99762d59efa6b96599e863893cf2da02 ./pytorch_model-00006-of-00007.bin
97
  598538f18fed1877b41f77de034c0c8a ./config.json
98
  fdb311c39b8659a5d5c1991339bafc09 ./tokenizer.json
99
+ fecfda4fba7bfd911e187a85db5fa2ef ./pytorch_model.bin.index.json
100
  edd1a5897748864768b1fab645b31491 ./tokenizer_config.json
101
  6b2e0a735969660e720c27061ef3f3d3 ./special_tokens_map.json
102
+ 5cfcb78b908ffa02e681cce69dbe4303 ./pytorch_model-00002-of-00007.bin
103
  ```
104
 
105
+ **Important: You should now have the correct LLaMa weights and be ready to apply the XORs. If the checksums above do not match yours, there is a problem.**
106
+
107
+ 7. Once you have LLaMa weights in the correct format, you can apply the XOR decoding:
108
 
109
  ```
110
  python xor_codec.py oasst-sft-6-llama-30b/ oasst-sft-6-llama-30b-xor/ llama30b_hf/
111
  ```
112
 
113
+ You should **expect to see one warning message** during execution:
114
 
115
  `Exception when processing 'added_tokens.json'`
116
 
117
+ This is normal. **If similar messages appear for other files, something has gone wrong**.
118
 
119
+ 8. Now run `find . -type f -exec md5sum "{}" +` in the output directory (here `oasst-sft-6-llama-30b`). You should get a file with exactly these checksums:
120
 
121
  ```
122
  970e99665d66ba3fad6fdf9b4910acc5 ./pytorch_model-00007-of-00007.bin
123
  659fcb7598dcd22e7d008189ecb2bb42 ./pytorch_model-00003-of-00007.bin
124
  ff6e4cf43ddf02fb5d3960f850af1220 ./pytorch_model-00001-of-00007.bin
125
  27b0dc092f99aa2efaf467b2d8026c3f ./added_tokens.json
126
+ 2917a1cafb895cf57e746cfd7696bfe5 ./generation_config.json
127
  740c324ae65b1ec25976643cda79e479 ./pytorch_model-00005-of-00007.bin
128
  f7aefb4c63be2ac512fd905b45295235 ./pytorch_model-00004-of-00007.bin
129
  eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
130
  369df2f0e38bda0d9629a12a77c10dfc ./pytorch_model-00006-of-00007.bin
131
+ cc9dbf56b68b68a585cc7367696e06a7 ./config.json
 
132
  76d47e4f51a8df1d703c6f594981fcab ./pytorch_model.bin.index.json
133
+ fd9452959d711be29ccf04a97598e8d1 ./tokenizer_config.json
134
+ 785905630a0fe583122a8446a5abe287 ./special_tokens_map.json
135
  ae48c4c68e4e171d502dd0896aa19a84 ./pytorch_model-00002-of-00007.bin
136
  ```
137
 
138
+ If so you have successfully decoded the weights and should be able to use the model with HuggingFace Transformers. **If your checksums do not match those above, there is a problem.**