|
--- |
|
license: mit |
|
--- |
|
# internlm-chatbode-20b-gguf |
|
|
|
<!--- PROJECT LOGO --> |
|
<p align="center"> |
|
<img src="https://huggingface.co/recogna-nlp/internlm-chatbode-7b/resolve/main/_1add1e52-f428-4c7c-bab2-3c6958e029fa.jpeg" alt="ChatBode Logo" width="400" style="margin-left:'auto' margin-right:'auto' display:'block'"/> |
|
</p> |
|
|
|
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) |
|
``` |