NeMo
English
nvidia
dpo
llama3
File size: 10,004 Bytes
bf67ff6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eff5da6
bf67ff6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cbad4b5
bf67ff6
cbad4b5
bf67ff6
cbad4b5
bf67ff6
 
 
cbad4b5
bf67ff6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eff5da6
 
 
 
 
bf67ff6
eff5da6
bf67ff6
 
 
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
---
license: llama3
library_name: nemo
language:
- en
inference: false
fine-tuning: false
tags:
- nvidia
- dpo
- llama3
datasets:
- nvidia/Daring-Anteater
- nvidia/HelpSteer2
---

# Llama3-70B-DPO-Chat

## License
The use of this model is governed by the [Llama 3 Community License Agreement](https://github.com/meta-llama/llama3/blob/main/LICENSE)

## Terms of use
By accessing this model, you are agreeing to the LLama 3 terms and conditions of the [license](https://github.com/meta-llama/llama3/blob/main/LICENSE), [acceptable use policy](https://github.com/meta-llama/llama3/blob/main/USE_POLICY.md) and [Meta’s privacy policy](https://www.facebook.com/privacy/policy/)


## Description:

Llama3-70B-DPO-Chat is a 70 billion parameter generative language model instruct-tuned using DPO technique. It takes input with context length up to 4,096 tokens. 


Llama3-70B-DPO-Chat is trained with NVIDIA NeMo, an end-to-end, cloud-native framework to build, customize, and deploy generative AI models anywhere. It includes training and inferencing frameworks, guardrailing toolkits, data curation tools, and pretrained models, offering enterprises an easy, cost-effective, and fast way to adopt generative AI.

You can train the model using [NeMo Aligner](https://github.com/NVIDIA/NeMo-Aligner) following [DPO training user guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/modelalignment/dpo.html) or run inference based on steps below.

## References

* [HelpSteer2](https://arxiv.org/abs/2406.08673)
* [DPO method](https://arxiv.org/abs/2305.18290)
* [Llama 3: Open Foundation and Instruct Models](https://ai.meta.com/blog/meta-llama-3/) <br>
* [Meta's Llama 3 Webpage](https://llama.meta.com/llama3/) <br>
* [Meta's Llama 3 Model Card](https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md) <br>


## Model Architecture: 

**Architecture Type:** Transformer 

**Network Architecture:** Llama 3

Llama3-70B-DPO-Chat is trained from [Llama 3 70B Base](https://huggingface.co/meta-llama/Meta-Llama-3-70B) with the [Daring-Anteater](https://huggingface.co/datasets/nvidia/Daring-Anteater) and [HelpSteer2](https://huggingface.co/datasets/nvidia/HelpSteer2) datasets.


## Software Integration:
 
**Toolkit:** 
NeMo Framework

**Supported Hardware Microarchitecture Compatibility:** <br>
* NVIDIA Ampere <br>
* NVIDIA Hopper <br>
* NVIDIA Turing <br>

**Supported Operating System(s):** Linux <br>
**Test Hardware** H100, A100 80GB, A100 40GB <br>


## Input:
**Input Format:** Text <br>
**Input Parameters:** Temperature, Top P = 1, Max Input Tokens: 4096 <br>

## Output:
**Output Format:** Text <br>
**Output Parameters:** Max Output Tokens: 4096 <br>



## Steps to run inference:

We demonstrate inference using NVIDIA NeMo Framework, which allows hassle-free model deployment based on [NVIDIA TRT-LLM](https://github.com/NVIDIA/TensorRT-LLM), a highly optimized inference solution focussing on high throughput and low latency.

Pre-requisite: You would need at least a machine with 4 40GB or 2 80GB NVIDIA GPUs, and 300GB of free disk space. 

1. Please sign up to get **free and immediate** access to [NVIDIA NeMo Framework container](https://developer.nvidia.com/nemo-framework). If you don’t have an NVIDIA NGC account, you will be prompted to sign up for an account before proceeding.
2. If you don’t have an NVIDIA NGC API key, sign into [NVIDIA NGC](https://ngc.nvidia.com/setup), selecting organization/team: ea-bignlp/ga-participants and click Generate API key. Save this key for the next step. Else, skip this step. 
3. On your machine, docker login to nvcr.io using
   ```
   docker login nvcr.io
   Username: $oauthtoken
   Password: <Your Saved NGC API Key>
   ```
4. Download the required container
   ```
   docker pull nvcr.io/ea-bignlp/ga-participants/nemofw-inference:23.10
   ```
   
5. Download the checkpoint
   ```
   git lfs install
   git clone https://huggingface.co/nvidia/Llama3-70B-DPO-Chat
   ```
6. Convert checkpoint into nemo format
   ```
   cd Llama3-70B-DPO-Chat
   tar -cvf Llama3-70B-DPO-Chat.nemo .
   mv Llama3-70B-DPO-Chat.nemo ../
   cd ..
   rm -r Llama3-70B-DPO-Chat
   ```
   
7. Run Docker container
   (In addition, to use Llama3 tokenizer, you need to ```export HF_HOME=<YOUR_HF_HOME_CONTAINING_TOKEN_WITH_LLAMA3_70B_ACCESS>```)
   ```
   docker run --gpus all -it --rm --shm-size=300g -p 8000:8000 -v ${PWD}/Llama3-70B-PPO-Chat.nemo:/opt/checkpoints/Llama3-70B-PPO-Chat.nemo,${HF_HOME}:/hf_home -w /opt/NeMo nvcr.io/ea-bignlp/ga-participants/nemofw-inference:23.10
   ```
   
8. Within the container, start the server in the background. This step does both conversion of the nemo checkpoint to TRT-LLM and then deployment using TRT-LLM. For an explanation of each argument and advanced usage, please refer to [NeMo FW Deployment Guide](https://docs.nvidia.com/nemo-framework/user-guide/latest/deployingthenemoframeworkmodel.html)
   
   ```
   HF_HOME=/hf_home python scripts/deploy/deploy_triton.py --nemo_checkpoint /opt/checkpoints/Llama3-70B-PPO-Chat.nemo --model_type="llama" --triton_model_name Llama3-70B-PPO-Chat --triton_http_address 0.0.0.0 --triton_port 8000 --num_gpus 2 --max_input_len 3072 --max_output_len 1024 --max_batch_size 1 &
   ```
   
9. Once the server is ready (i.e. when you see this messages below), you are ready to launch your client code

    ```
    Started HTTPService at 0.0.0.0:8000
    Started GRPCInferenceService at 0.0.0.0:8001
    Started Metrics Service at 0.0.0.0:8002
    ```

    ```python
    from nemo.deploy import NemoQuery
    
    PROMPT_TEMPLATE = """<extra_id_0>System

    <extra_id_1>User
    {prompt}
    <extra_id_1>Assistant
    """
    
    question = "Write a poem on NVIDIA in the style of Shakespeare"
    prompt = PROMPT_TEMPLATE.format(prompt=question)
    print(prompt)

    nq = NemoQuery(url="localhost:8000", model_name="Llama3-70B-DPO-Chat")
    output = nq.query_llm(prompts=[prompt], max_output_token=15, top_k=1, top_p=0.0, temperature=1.0)
    
    #this container currently does not support stop words but you do something like this as workaround
    output = output[0][0].split("\n<extra_id_1>")[0]
    print(output)
    ```
10. If you would support multi-turn conversations or adjust attribute values at inference time, here is some guidance:

    
    Default template for Single Turn
    ```
    <extra_id_0>System
   
    <extra_id_1>User
    {prompt 1}
    <extra_id_1>Assistant
    ```

    Default template for Multi-Turn
    ```
    <extra_id_0>System
   
    <extra_id_1>User
    {prompt 1}
    <extra_id_1>Assistant
    {response 1}
    <extra_id_1>User
    {prompt 2}
    <extra_id_1>Assistant
    ```



## Evaluation

| Model                   | MT Bench      | Mean Response   | TruthfulQA | AlpacaEval   | Arena Hard       |
|-------------------------|:---------------:|:-----------------:|:------------:|:--------------:|:------------------:|
|Details                         | (GPT-4-Turbo) | Length (Chars.) | MC2        | 2.0 LC (SE)  | (95% CI)         |
| GPT-4-0613             | 8.12          | 1057.1          | 0.5900     | 30.20 (1.07) | 37.9 (-2.8, 2.4) |
| Llama3 70B Instruct    | 8.16          | 1683.0          | 0.6181     | 34.40 (1.38) | 41.1 (-2.0, 2.2) |
| **_Llama3-70B-DPO-Chat_**     | 8.09          | 1492.0          | 0.6328     | 29.17 (1.35) | 42.5 (-2.1, 2.4) |
| Llama3-70B-PPO-Chat     | 8.13          | 1497.3          | 0.5629     | 33.17 (1.38) | 39.9 (-2.4, 2.0) |
| Llama3-70B-SteerLM-Chat | 8.28         | 1471.9          | 0.5913     | 29.93 (1.35) | 39.1 (-2.2, 2.4) |


## Ethical Considerations:

NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications.  When downloaded or used in accordance with our terms of service, developers should work with their supporting model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.  For more detailed information on ethical considerations for this model, please see the Model Card++ Explainability, Bias, Safety & Security, and Privacy Subcards.  Please report security vulnerabilities or NVIDIA AI Concerns [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).

## Limitations

The model was trained on the data that contains toxic language and societal biases originally crawled from the Internet. Therefore, the model may amplify those biases and return toxic responses especially when prompted with toxic prompts. 

The model may generate answers that may be inaccurate, omit key information, or include irrelevant or redundant text producing socially unacceptable or undesirable text, even if the prompt itself does not include anything explicitly offensive. 

We recommend deploying the model with [NeMo Guardrails](https://github.com/NVIDIA/NeMo-Guardrails) to mitigate these potential issues.



## Contact

E-Mail: [Zhilin Wang](mailto:zhilinw@nvidia.com)

## Citation

If you find this model useful, please cite the following works

```bibtex
@misc{wang2024helpsteer2,
      title={HelpSteer2: Open-source dataset for training top-performing reward models}, 
      author={Zhilin Wang and Yi Dong and Olivier Delalleau and Jiaqi Zeng and Gerald Shen and Daniel Egert and Jimmy J. Zhang and Makesh Narsimhan Sreedhar and Oleksii Kuchaiev},
      year={2024},
      eprint={2406.08673},
      archivePrefix={arXiv},
      primaryClass={id='cs.CL' full_name='Computation and Language' is_active=True alt_name='cmp-lg' in_archive='cs' is_general=False description='Covers natural language processing. Roughly includes material in ACM Subject Class I.2.7. Note that work on artificial languages (programming languages, logics, formal systems) that does not explicitly address natural-language issues broadly construed (natural-language processing, computational linguistics, speech, text retrieval, etc.) is not appropriate for this area.'}
}
```