--- 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) ```