---
license: mit
---
# internlm-chatbode-20b-gguf
O InternLm-ChatBode é um modelo de linguagem ajustado para o idioma português, desenvolvido a partir do modelo [InternLM2](https://huggingface.co/internlm/internlm2-chat-20b). Este modelo foi refinado através do processo de fine-tuning utilizando o dataset UltraAlpaca.
O modelo internlm-chatbode-20b-gguf no formato GGUF pode ser utilizado pelo llama.cpp, um framework de código aberto altamente popular para inferência de LLMs, em várias plataformas de hardware, tanto localmente quanto na nuvem.
Este repositório oferece o internlm-chatbode-20b no formato GGUF em meia precisão e várias versões quantizadas incluindo q5_0, q5_k_m, q6_k, e q8_0.
Nas seções seguintes, apresentamos o procedimento de instalação, seguido por uma explicação do processo de download do modelo. E, finalmente, ilustramos os métodos para inferência do modelo e implantação do serviço por meio de exemplos específicos.
## Instalação
Recomendamos construir o `llama.cpp` a partir do código-fonte. O snippet de código a seguir fornece um exemplo para a plataforma Linux CUDA. Para instruções em outras plataformas, consulte o [guia oficial](https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#build).
- Passo 1: criar um ambiente conda e instalar cmake
```shell
conda create --name internlm2 python=3.10 -y
conda activate internlm2
pip install cmake
```
- Passo 2: clonar o código-fonte e construir o projeto
```shell
git clone --depth=1 https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j
```
Todos os alvos construídos podem ser encontrados no subdiretório `build/bin`
Nas seções seguintes, assumimos que o diretório de trabalho está no diretório raiz do `llama.cpp`.
## Download de Modelos
Na [introdução](#internlm-chatbode-20b-gguf), mencionamos que este repositório inclui vários modelos com diferentes níveis de precisão computacional. Você pode baixar o modelo apropriado com base nas suas necessidades.
Por exemplo, `internlm-chatbode-20b-f16.gguf` pode ser baixado como abaixo:
```shell
pip install huggingface-hub
huggingface-cli download recogna-nlp/internlm-chatbode-20b-gguf internlm-chatbode-20b-f16.gguf --local-dir . --local-dir-use-symlinks False
```
## Inferência
Você pode usar o `llama-cli` para realizar inferências. Para uma explicação detalhada do `llama-cli`, consulte [este guia](https://github.com/ggerganov/llama.cpp/blob/master/examples/main/README.md)
```shell
build/bin/llama-cli \
--model internlm-chatbode-20b-f16.gguf \
--predict 512 \
--ctx-size 4096 \
--gpu-layers 49 \
--temp 0.8 \
--top-p 0.8 \
--top-k 50 \
--seed 1024 \
--color \
--prompt "<|im_start|>system\nVocê é assistente de IA chamado ChatBode.\n- O ChatBode é um modelo de língua conversacional projetado para ser prestativo, honesto e inofensivo.\n- O ChatBode pode entender e se comunicar fluentemente na linguagem escolhida pelo usuário, em especial o Português, o Inglês e o 中文.<|im_end|>\n" \
--interactive \
--multiline-input \
--conversation \
--verbose \
--logdir workdir/logdir \
--in-prefix "<|im_start|>user\n" \
--in-suffix "<|im_end|>\n<|im_start|>assistant\n"
```
## Servindo
`llama.cpp` fornece um servidor compatível com a API OpenAI - `llama-server`. Você pode implantar `internlm-chatbode-20b-f16.gguf` em um serviço assim:
```shell
./build/bin/llama-server -m ./internlm-chatbode-20b-f16.gguf -ngl 49
```
No lado do cliente, você pode acessar o serviço através da API OpenAI:
```python
from openai import OpenAI
client = OpenAI(
api_key='YOUR_API_KEY', #Como não setamos chaves válidas, qualquer uma é aceita, inclusive da forma que está aqui
base_url='http://localhost:8080/v1'
)
model_name = client.models.list().data[0].id
response = client.chat.completions.create(
model=model_name,
messages=[
{"role": "system", "content": "Você é assistente de IA chamado ChatBode.\n- O ChatBode é um modelo de língua conversacional projetado para ser prestativo, honesto e inofensivo.\n- O ChatBode pode entender e se comunicar fluentemente na linguagem escolhida pelo usuário, em especial o Português, o Inglês e o 中文."},
{"role": "user", "content": "Olá, tudo bem? Estou precisando de ajuda em uma tarefa! Me explique o que é o teorema de Pitágoras e dê um exercício resolvido como exemplo."},
],
temperature=0.8,
top_p=0.8
)
print(response)
```