Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,105 @@
|
|
1 |
-
---
|
2 |
-
license: mit
|
3 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: mit
|
3 |
+
---
|
4 |
+
# internlm-chatbode-20b-gguf
|
5 |
+
|
6 |
+
<!--- PROJECT LOGO -->
|
7 |
+
<p align="center">
|
8 |
+
<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'"/>
|
9 |
+
</p>
|
10 |
+
|
11 |
+
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.
|
12 |
+
|
13 |
+
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.
|
14 |
+
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.
|
15 |
+
|
16 |
+
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.
|
17 |
+
|
18 |
+
## Instalação
|
19 |
+
|
20 |
+
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).
|
21 |
+
|
22 |
+
- Passo 1: criar um ambiente conda e instalar cmake
|
23 |
+
|
24 |
+
```shell
|
25 |
+
conda create --name internlm2 python=3.10 -y
|
26 |
+
conda activate internlm2
|
27 |
+
pip install cmake
|
28 |
+
```
|
29 |
+
|
30 |
+
- Passo 2: clonar o código-fonte e construir o projeto
|
31 |
+
|
32 |
+
```shell
|
33 |
+
git clone --depth=1 https://github.com/ggerganov/llama.cpp.git
|
34 |
+
cd llama.cpp
|
35 |
+
cmake -B build -DGGML_CUDA=ON
|
36 |
+
cmake --build build --config Release -j
|
37 |
+
```
|
38 |
+
|
39 |
+
Todos os alvos construídos podem ser encontrados no subdiretório `build/bin`
|
40 |
+
|
41 |
+
Nas seções seguintes, assumimos que o diretório de trabalho está no diretório raiz do `llama.cpp`.
|
42 |
+
|
43 |
+
## Download de Modelos
|
44 |
+
|
45 |
+
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.
|
46 |
+
Por exemplo, `internlm-chatbode-20b-f16.gguf` pode ser baixado como abaixo:
|
47 |
+
|
48 |
+
```shell
|
49 |
+
pip install huggingface-hub
|
50 |
+
huggingface-cli download recogna-nlp/internlm-chatbode-20b-gguf internlm-chatbode-20b-f16.gguf --local-dir . --local-dir-use-symlinks False
|
51 |
+
```
|
52 |
+
|
53 |
+
## Inferência
|
54 |
+
|
55 |
+
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)
|
56 |
+
|
57 |
+
```shell
|
58 |
+
build/bin/llama-cli \
|
59 |
+
--model internlm-chatbode-20b-f16.gguf \
|
60 |
+
--predict 512 \
|
61 |
+
--ctx-size 4096 \
|
62 |
+
--gpu-layers 49 \
|
63 |
+
--temp 0.8 \
|
64 |
+
--top-p 0.8 \
|
65 |
+
--top-k 50 \
|
66 |
+
--seed 1024 \
|
67 |
+
--color \
|
68 |
+
--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" \
|
69 |
+
--interactive \
|
70 |
+
--multiline-input \
|
71 |
+
--conversation \
|
72 |
+
--verbose \
|
73 |
+
--logdir workdir/logdir \
|
74 |
+
--in-prefix "<|im_start|>user\n" \
|
75 |
+
--in-suffix "<|im_end|>\n<|im_start|>assistant\n"
|
76 |
+
```
|
77 |
+
|
78 |
+
## Servindo
|
79 |
+
|
80 |
+
`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:
|
81 |
+
|
82 |
+
```shell
|
83 |
+
./build/bin/llama-server -m ./internlm-chatbode-20b-f16.gguf -ngl 49
|
84 |
+
```
|
85 |
+
|
86 |
+
No lado do cliente, você pode acessar o serviço através da API OpenAI:
|
87 |
+
|
88 |
+
```python
|
89 |
+
from openai import OpenAI
|
90 |
+
client = OpenAI(
|
91 |
+
api_key='YOUR_API_KEY', #Como não setamos chaves válidas, qualquer uma é aceita, inclusive da forma que está aqui
|
92 |
+
base_url='http://localhost:8080/v1'
|
93 |
+
)
|
94 |
+
model_name = client.models.list().data[0].id
|
95 |
+
response = client.chat.completions.create(
|
96 |
+
model=model_name,
|
97 |
+
messages=[
|
98 |
+
{"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 中文."},
|
99 |
+
{"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."},
|
100 |
+
],
|
101 |
+
temperature=0.8,
|
102 |
+
top_p=0.8
|
103 |
+
)
|
104 |
+
print(response)
|
105 |
+
```
|