brunoconterato commited on
Commit
d7be2c3
·
1 Parent(s): 3fe02e8

Add comprehensive instructions for converting, quantizing, and publishing LLMs in GGUF format for Ollama and Hugging Face

Browse files
Files changed (1) hide show
  1. instructions.md +279 -0
instructions.md ADDED
@@ -0,0 +1,279 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Guia Completo: Convertendo, Quantizando e Publicando LLMs em GGUF para Ollama e Hugging Face
2
+
3
+ Este guia detalha o processo para pegar um modelo de linguagem (LLM) do Hugging Face em seu formato original (como `safetensors`), convertê-lo para o formato GGUF usando o `llama.cpp` via Docker, otimizá-lo através de quantização (em diferentes níveis de precisão) e, finalmente, disponibilizá-lo para uso local com Ollama e para publicação pública no Hugging Face (ou na biblioteca oficial do Ollama).
4
+
5
+ ## Objetivos
6
+
7
+ - Compreender a diferença entre conversão de formato, quantização FP16 e quantização de baixa precisão (Q4_K_M, etc.).
8
+ - Converter um modelo LLM do Hugging Face para o formato GGUF em precisão FP16.
9
+ - Quantizar o modelo GGUF FP16 para precisões mais baixas (ex: Q4_K_M) para otimização de desempenho e tamanho.
10
+ - Rodar o modelo GGUF localmente usando Ollama.
11
+ - Publicar o modelo GGUF no Hugging Face Model Hub para que possa ser baixado e usado por outros via Ollama.
12
+ - Compreender e aplicar as exigências de licenciamento para modelos como o Gemma.
13
+
14
+ ---
15
+
16
+ ## 1. Pré-requisitos
17
+
18
+ Antes de começar, certifique-se de ter as seguintes ferramentas instaladas e configuradas no seu sistema:
19
+
20
+ - **Docker:** Para rodar o ambiente `llama.cpp` isoladamente.
21
+ - [Instalação do Docker](https://docs.docker.com/get-docker/)
22
+ - **Git:** Para clonar repositórios e gerenciar versões.
23
+ - [Instalação do Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
24
+ - **Git LFS (Large File Storage):** Essencial para baixar e fazer upload de arquivos grandes (`.safetensors`, `.gguf`) no Git.
25
+ ```bash
26
+ sudo apt update && sudo apt install git-lfs # Linux Mint/Ubuntu
27
+ git lfs install # configuração única
28
+ ```
29
+
30
+ * **Python 3 e `pip`:**
31
+
32
+ ```bash
33
+ sudo apt install python3 python3-pip # Linux Mint/Ubuntu
34
+ ```
35
+
36
+ * **`huggingface_hub` (CLI):** Ferramentas de linha de comando para interagir com o Hugging Face.
37
+
38
+ ```bash
39
+ pip install huggingface_hub
40
+ ```
41
+
42
+ * **Ollama:** Para rodar os modelos GGUF localmente.
43
+
44
+ - [Instalação do Ollama](https://ollama.com/download)
45
+
46
+ ---
47
+
48
+ ## 2. Preparação do Ambiente e Modelo
49
+
50
+ ### 2.1. Instalação e Configuração do Ollama (Local)
51
+
52
+ 1. Baixe e instale conforme seu sistema operacional.
53
+ 2. Verifique a instalação executando:
54
+
55
+ ```bash
56
+ ollama
57
+ ```
58
+
59
+ Deve exibir a lista de comandos disponíveis.
60
+
61
+ ### 2.2. Criar Diretórios e Baixar o Modelo
62
+
63
+ Estrutura recomendada:
64
+
65
+ ```
66
+ ~/Workspace/Models/
67
+ - meu_modelo_original/ # arquivos do Hugging Face
68
+ - saida_gguf/ # saída das conversões e quantizações
69
+ ```
70
+
71
+ Crie com:
72
+
73
+ ```bash
74
+ mkdir -p ~/Workspace/Models/meu_modelo_original
75
+ mkdir -p ~/Workspace/Models/saida_gguf
76
+ ```
77
+
78
+ Clone o modelo:
79
+
80
+ ```bash
81
+ cd ~/Workspace/Models/
82
+ git clone https://huggingface.co/CEIA-UFG/Gemma-3-Gaia-PT-BR-4b-it meu_modelo_original
83
+ ```
84
+
85
+ Garanta que o Git LFS foi instalado antes de clonar, para baixar os arquivos grandes corretamente.
86
+
87
+ ---
88
+
89
+ ## 3. Conversão e Quantização (via Docker)
90
+
91
+ Usaremos a imagem `ghcr.io/ggml-org/llama.cpp:full`.
92
+
93
+ ### 3.1. Pull da Imagem Docker
94
+
95
+ ```bash
96
+ docker pull ghcr.io/ggml-org/llama.cpp:full
97
+ ```
98
+
99
+ ### 3.2. Converter para GGUF + FP16
100
+
101
+ ```bash
102
+ docker run --rm -it \
103
+ --entrypoint /bin/bash \
104
+ -v ~/Workspace/Models/meu_modelo_original:/app/model_in:ro \
105
+ -v ~/Workspace/Models/saida_gguf:/app/model_out \
106
+ ghcr.io/ggml-org/llama.cpp:full \
107
+ -c "cd /llama.cpp && python3 convert_hf_to_gguf.py /app/model_in \
108
+ --outtype f16 \
109
+ --outfile /app/model_out/gemma_3_gaia_f16.gguf"
110
+ ```
111
+
112
+ ### 3.3. Quantizar p/ Q4_K_M (4 bits)
113
+
114
+ ```bash
115
+ docker run --rm -it \
116
+ --entrypoint /bin/bash \
117
+ -v ~/Workspace/Models/saida_gguf:/app/model_out \
118
+ ghcr.io/ggml-org/llama.cpp:full \
119
+ -c "cd /llama.cpp && ./quantize \
120
+ /app/model_out/gemma_3_gaia_f16.gguf \
121
+ /app/model_out/gemma_3_gaia_q4_k_m.gguf \
122
+ Q4_K_M"
123
+ ```
124
+
125
+ ---
126
+
127
+ ## 4. Utilizando o Modelo no Ollama (Local)
128
+
129
+ Agora você terá, por exemplo, `gemma_3_gaia_f16.gguf` e/ou `gemma_3_gaia_q4_k_m.gguf` dentro de `~/Workspace/Models/saida_gguf`.
130
+
131
+ ### 4.1. Criar um `Modelfile`
132
+
133
+ No diretório da saída:
134
+
135
+ ```bash
136
+ cd ~/Workspace/Models/saida_gguf
137
+ nano Modelfile
138
+ ```
139
+
140
+ Conteúdo:
141
+
142
+ ```text
143
+ # Modelfile
144
+ FROM gemma_3_gaia_q4_k_m.gguf
145
+
146
+ # Exemplo de SYSTEM prompt
147
+ SYSTEM """Você é um assistente de IA prestativo e amigável."""
148
+
149
+ # Exemplos de parâmetros (ajuste conforme sua RAM/VRAM)
150
+ # PARAMETER temperature 0.7
151
+ # PARAMETER top_k 40
152
+ # PARAMETER top_p 0.9
153
+ # PARAMETER num_ctx 4096
154
+ ```
155
+
156
+ ### 4.2. Importar para Ollama
157
+
158
+ ```bash
159
+ ollama create brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:q4_k_m -f Modelfile
160
+ # (ou para F16):
161
+ # ollama create brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:f16 -f Modelfile
162
+ ```
163
+
164
+ ### 4.3. Rodar o Modelo
165
+
166
+ ```bash
167
+ ollama run brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:q4_k_m
168
+ ```
169
+
170
+ ---
171
+
172
+ ## 5. Publicando o Modelo para Compartilhamento
173
+
174
+ Temos duas formas principais de publicar: via Hugging Face ou via biblioteca oficial do Ollama.
175
+
176
+ ### 5.1. No Hugging Face Model Hub
177
+
178
+ #### 5.1.1. Criar Repositório
179
+
180
+ - Vá ao Hugging Face e crie um repositório público (ex: `Gemma-3-Gaia-PT-BR-4b-it-GGUF-F16`), escolhendo a licença adequada.
181
+
182
+ #### 5.1.2. Preparar Repositório Local
183
+
184
+ ```bash
185
+ cd ~/Workspace/Models/saida_gguf
186
+ git init
187
+ git lfs install
188
+ git lfs track "*.gguf"
189
+ ```
190
+
191
+ #### 5.1.3. Adicionar arquivos essenciais
192
+
193
+ Crie ou atualize:
194
+
195
+ ````markdown
196
+ ---
197
+ license: gemma
198
+ language:
199
+ - pt
200
+ base_model:
201
+ - CEIA-UFG/Gemma-3-Gaia-PT-BR-4b-it
202
+ - google/gemma-3-4b-it
203
+ ---
204
+
205
+ # Gemma-3-Gaia-PT-BR-4b-it – GGUF Quantizado por brunoconterato (F16)
206
+
207
+ Este repositório contém uma versão quantizada (16‑bit) do modelo **Gemma‑3‑Gaia‑PT‑BR‑4b‑it**, otimizada para uso com [Ollama](https://ollama.com/).
208
+
209
+ **Detalhes do modelo:**
210
+
211
+ - **Base model:** Gemma‑3‑Gaia‑PT‑BR‑4b‑it
212
+ - **Quantização:** F16
213
+ - **Origem:** https://huggingface.co/CEIA-UFG/Gemma-3-Gaia-PT-BR-4b-it
214
+ - **Desenvolvedor:** brunoconterato
215
+
216
+ ## Licença
217
+
218
+ Este modelo está disponível sob os **Gemma Terms of Use**. Ao baixar ou usar, você concorda com:
219
+
220
+ - Políticas de uso proibido (Prohibited Use Policy) conforme exigido.
221
+ - Inclusão dos termos completos da licença.
222
+ - Aviso de modificação (quantização).
223
+
224
+ Arquivos adicionais:
225
+
226
+ - `Gemma_Terms_of_Use.txt` – texto completo da licença oficial.
227
+ - `NOTICE.txt` – aviso exigido pela licença (veja abaixo).
228
+
229
+ ## Uso com Ollama
230
+
231
+ ```bash
232
+ ollama run hf.co/brunoconterato/Gemma-3-Gaia-PT-BR-4b-it-GGUF-F16
233
+ ```
234
+ ````
235
+
236
+ ````
237
+
238
+ Crie também:
239
+ ```bash
240
+ echo "Gemma is provided under and subject to the Gemma Terms of Use found at ai.google.dev/gemma/terms" > NOTICE.txt
241
+ ````
242
+
243
+ Adicione tudo:
244
+
245
+ ```bash
246
+ git add README.md Gemma_Terms_of_Use.txt NOTICE.txt gemma_3_gaia_f16.gguf
247
+ git commit -m "Initial commit: Gemma‑3‑Gaia‑PT‑BR‑4b‑it GGUF (F16) model + documentação e licença"
248
+ ```
249
+
250
+ #### 5.1.4. Conectar e Enviar
251
+
252
+ ```bash
253
+ huggingface-cli login
254
+ huggingface-cli lfs-enable-largefiles .
255
+ git remote add origin https://huggingface.co/brunoconterato/Gemma-3-Gaia-PT-BR-4b-it-GGUF-F16
256
+ git push -u origin main
257
+ ```
258
+
259
+ ### 5.2. Biblioteca oficial do Ollama
260
+
261
+ 1. Configure sua chave pública SSH (`~/.ollama/id_ed25519.pub` ou equivalente).
262
+ 2. Copie o modelo local para o namespace de publicação:
263
+
264
+ ```bash
265
+ ollama cp brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:q4_k_m brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:q4_k_m
266
+ ```
267
+
268
+ 3. Publique:
269
+
270
+ ```bash
271
+ ollama push brunoconterato/Gemma-3-Gaia-PT-BR-4b-it:q4_k_m
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 6. Considerações Finais
277
+
278
+ - **Licenciamento Gemma:** exige atribuição, redistribuição dos termos de uso e aviso de modificação mesmo em derivados.
279
+ - **Hardware:** mesmo quantizados, LLMs exigem memória RAM/VRAM suficiente—verifique seu sistema antes de rodar.