Update README.md
Browse files
README.md
CHANGED
@@ -1 +1,152 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language:
|
3 |
+
- pt
|
4 |
+
license: apache-2.0
|
5 |
+
library_name: transformers
|
6 |
+
tags:
|
7 |
+
- portugues
|
8 |
+
- portuguese
|
9 |
+
- QA
|
10 |
+
- instruct
|
11 |
+
base_model: meta-llama/Meta-Llama-3-8B-Instruct
|
12 |
+
datasets:
|
13 |
+
- rhaymison/superset
|
14 |
+
pipeline_tag: text-generation
|
15 |
+
---
|
16 |
+
|
17 |
+
# Llama-3-portuguese-Tom-cat-8b-instruct
|
18 |
+
|
19 |
+
<p align="center">
|
20 |
+
<img src="https://raw.githubusercontent.com/rhaymisonbetini/huggphotos/main/tom-cat-8b.webp" width="50%" style="margin-left:'auto' margin-right:'auto' display:'block'"/>
|
21 |
+
</p>
|
22 |
+
|
23 |
+
|
24 |
+
This model was trained with a superset of 300,000 chat in Portuguese.
|
25 |
+
The model comes to help fill the gap in models in Portuguese. Tuned from the Llama3 8B, the model was adjusted mainly for chat.
|
26 |
+
|
27 |
+
# How to use
|
28 |
+
|
29 |
+
### FULL MODEL : A100
|
30 |
+
### HALF MODEL: L4
|
31 |
+
### 8bit or 4bit : T4 or V100
|
32 |
+
|
33 |
+
You can use the model in its normal form up to 4-bit quantization. Below we will use both approaches.
|
34 |
+
Remember that verbs are important in your prompt. Tell your model how to act or behave so that you can guide them along the path of their response.
|
35 |
+
Important points like these help models (even smaller models like 8b) to perform much better.
|
36 |
+
|
37 |
+
```python
|
38 |
+
!pip install -q -U transformers
|
39 |
+
!pip install -q -U accelerate
|
40 |
+
!pip install -q -U bitsandbytes
|
41 |
+
|
42 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
|
43 |
+
model = AutoModelForCausalLM.from_pretrained("rhaymison/Llama-3-portuguese-Tom-cat-8b-instruct", device_map= {"": 0})
|
44 |
+
tokenizer = AutoTokenizer.from_pretrained("rhaymison/Llama-3-portuguese-Tom-cat-8b-instruct")
|
45 |
+
model.eval()
|
46 |
+
|
47 |
+
```
|
48 |
+
|
49 |
+
You can use with Pipeline.
|
50 |
+
```python
|
51 |
+
|
52 |
+
from transformers import pipeline
|
53 |
+
pipe = pipeline("text-generation",
|
54 |
+
model=model,
|
55 |
+
tokenizer=tokenizer,
|
56 |
+
do_sample=True,
|
57 |
+
max_new_tokens=512,
|
58 |
+
num_beams=2,
|
59 |
+
temperature=0.3,
|
60 |
+
top_k=50,
|
61 |
+
top_p=0.95,
|
62 |
+
early_stopping=True,
|
63 |
+
pad_token_id=tokenizer.eos_token_id,
|
64 |
+
)
|
65 |
+
|
66 |
+
|
67 |
+
def format_prompt(question:str):
|
68 |
+
system_prompt = "Abaixo está uma instrução que descreve uma tarefa, juntamente com uma entrada que fornece mais contexto. Escreva uma resposta que complete adequadamente o pedido."
|
69 |
+
|
70 |
+
return f"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
|
71 |
+
{ system_prompt }<|eot_id|><|start_header_id|>user<|end_header_id|>
|
72 |
+
{ question }<|eot_id|><|start_header_id|>assistant<|end_header_id|>"""
|
73 |
+
|
74 |
+
prompt = format_prompt("Me fale sobra a OAB, Ordem dos Advogados do Brasil")
|
75 |
+
result = pipe(prompt)
|
76 |
+
result[0]["generated_text"].split("assistant<|end_header_id|>")[1]
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
#A Ordem dos Advogados do Brasil (OAB) é a entidade responsável por regulamentar e fiscalizar a profissão de advogado no Brasil.
|
81 |
+
#Foi criada em 1930, com o objetivo de proteger os direitos e interesses dos advogados e da sociedade, garantindo a defesa dos direitos e garantias fundamentais.
|
82 |
+
#A OAB é uma entidade de direito público, com personalidade jurídica própria, e é composta por advogados e advogadas que atuam em todo o território nacional.
|
83 |
+
#A entidade é dirigida por um Conselho Federal, que é o órgão máximo da OAB, e é composto por 32 membros, eleitos por votação direta dos advogados e advogadas.
|
84 |
+
#A OAB tem como principais atribuições:. Regulamentar a profissão de advogado: a OAB estabelece as normas e regulamentações para a formação, habilitação e exercício
|
85 |
+
#a profissão de advogado no Brasil. Fiscalizar a atividade dos advogados: a OAB fiscaliza a atividade dos advogados, verificando se eles atendem às normas e
|
86 |
+
#regulamentações estabelecidas.. Defender os direitos e interesses dos advogados: a OAB defende os direitos e interesses dos advogados, garantindo que eles
|
87 |
+
#possam exercer sua profissão com liberdade e segurança.\n4. Representar a sociedade: a OAB representa a sociedade, defendendo os direitos e interesses dos
|
88 |
+
#dadãos e das instituições.A OAB também é responsável por: Certificar a formação e habilitação dos advogados; Fiscalizar a atividade dos advogados, verificando
|
89 |
+
#se eles atendem às normas e regulamentações estabelecidas;\n* Defender os direitos e interesses dos advogados, garantindo que eles possam exercer sua profissão
|
90 |
+
#com liberdade e segurança; Representar a sociedade, defendendo os direitos e interesses dos cidadãos e das instituições.Além disso, a OAB também é responsável por:
|
91 |
+
#Publicar o Diário da Ordem dos Advogados do Brasil
|
92 |
+
|
93 |
+
```
|
94 |
+
|
95 |
+
|
96 |
+
```python
|
97 |
+
prompt = format_prompt("Haja como um professor de matemática e me explique porque 2 + 2 = 4")
|
98 |
+
result = pipe(prompt)
|
99 |
+
result[0]["generated_text"].split("assistant<|end_header_id|>")[1]
|
100 |
+
|
101 |
+
#Meu aluno, é um prazer explicar um conceito fundamental da matemática! equação 2 + 2 = 4 pode parecer simples, mas é
|
102 |
+
#importante entender por quê ela é verdadeira. Em matemática, a adição é uma operação que combina dois números para obter um resultado.
|
103 |
+
#Nesse caso, estamos adicionando 2 e 2. Para entender melhor, vamos começar com um exemplo concreto. Imagine que você tem 2 maçãs em uma mesa e seu amigo também tem
|
104 |
+
#2 maçãs em outra mesa. Se você e seu amigo combinam suas maçãs, você terá agora 4 maçãs.Agora, vamos usar símbolos para representar essa situação.
|
105 |
+
#Podemos escrever 2 + 2 =?, e o resultado é 4. Isso significa que quando você soma 2 e 2, o resultado é 4. Mas por quê isso é verdade? Isso é porque a adição é
|
106 |
+
#uma operação que segue certas regras. Uma dessas regras é que a ordem em que você soma os números não muda o resultado. Isso significa que 2 + 2 é igual a 2 + 2,
|
107 |
+
#independentemente da ordem em que você soma.Além disso, a adição também é uma operação que é associativa, o que significa que você pode adicionar números em
|
108 |
+
#qualquer ordem e o resultado será o mesmo. Por exemplo, (2 + 2) + 0 = 2 + (2 + 0). Isso é verdade porque a adição é uma operação que é idempotente, o que significa
|
109 |
+
#que adicionando 0 a um número não muda o resultado.Portanto, quando você soma 2 e 2, o resultado é 4 porque a adição segue essas regras. A equação 2 + 2 = 4
|
110 |
+
#é verdadeira porque é uma consequência lógica da definição da adição e das regras que a governam.Espero que isso tenha ajudado a entender melhor por quê 2 + 2 = 4,
|
111 |
+
#meu aluno!
|
112 |
+
|
113 |
+
```
|
114 |
+
|
115 |
+
|
116 |
+
If you are having a memory problem such as "CUDA Out of memory", you should use 4-bit or 8-bit quantization.
|
117 |
+
For the complete model in colab you will need the A100.
|
118 |
+
If you want to use 4bits or 8bits, T4 or L4 will already solve the problem.
|
119 |
+
|
120 |
+
# 4bits example
|
121 |
+
|
122 |
+
```python
|
123 |
+
from transformers import BitsAndBytesConfig
|
124 |
+
import torch
|
125 |
+
nb_4bit_config = BitsAndBytesConfig(
|
126 |
+
load_in_4bit=True,
|
127 |
+
bnb_4bit_quant_type="nf4",
|
128 |
+
bnb_4bit_compute_dtype=torch.bfloat16,
|
129 |
+
bnb_4bit_use_double_quant=True
|
130 |
+
)
|
131 |
+
|
132 |
+
model = AutoModelForCausalLM.from_pretrained(
|
133 |
+
base_model,
|
134 |
+
quantization_config=bnb_config,
|
135 |
+
device_map={"": 0}
|
136 |
+
)
|
137 |
+
|
138 |
+
```
|
139 |
+
|
140 |
+
### Comments
|
141 |
+
|
142 |
+
Any idea, help or report will always be welcome.
|
143 |
+
|
144 |
+
email: [email protected]
|
145 |
+
|
146 |
+
<div style="display:flex; flex-direction:row; justify-content:left">
|
147 |
+
<a href="https://www.linkedin.com/in/heleno-betini-2b3016175/" target="_blank">
|
148 |
+
<img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white">
|
149 |
+
</a>
|
150 |
+
<a href="https://github.com/rhaymisonbetini" target="_blank">
|
151 |
+
<img src="https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white">
|
152 |
+
</a>
|