Skip to content

Instantly share code, notes, and snippets.

@viniciusgonmelo
Last active June 13, 2023 02:38
Show Gist options
  • Save viniciusgonmelo/482dd76ed5accc9e5c3f0aa24dfefe8e to your computer and use it in GitHub Desktop.
Save viniciusgonmelo/482dd76ed5accc9e5c3f0aa24dfefe8e to your computer and use it in GitHub Desktop.
Executa o modelo Vicuna 7B com o Llama.cpp.
#!/usr/bin/env bash
set -e
# Baixar o modelo pré-treinado e o prompt em português:
# - https://huggingface.co/CRD716/ggml-vicuna-1.1-quantized/tree/main
# Vicuna 7B de 5 bit otimizado, "ggml-vicuna-7b-1.1--q5_1.bin"
script_dir="$(dirname "$0")"
prompt_template=${prompt_template:-"${script_dir}/prompt-PT-BR.txt"}
user_name="${user:-USUÁRIO}"
ai_name="${ai:-VICUNA-7B-Q5-1}"
prompt_file=$(mktemp /tmp/prompt.XXXXXXX)
sed -e "s/\[\[USER_NAME\]\]/$user_name/g" \
-e "s/\[\[AI_NAME\]\]/$ai_name/g" \
$prompt_template > $prompt_file
# Opções pra equilibrar os recursos e rodar em um laptop simples:
# https://github.com/ggerganov/llama.cpp/blob/master/examples/main/README.md
# --mlock: força uso só da RAM, sem comprimir ou usar swap
# --no-nmap: não mapeia o modelo na RAM; carregamento mais lento; ajuda a rodar modelos
# com menos RAM
# -t --threads: número de threads que o llama.cpp usa pra computação; o exemplo - 7 - é para
# um laptop com 4 núcleos, 2 threads por núcleo (não uso 8 pra haver CPU pras atividades
# do sistema)
# --reverse-prompt e --in-prefix devem ser mantidas como estão pro chat funcionar
# https://github.com/ggerganov/llama.cpp/blob/master/examples/main/README.md#in-prefix
# --model: caminho pro modelo
llama.cpp --ctx-size 512 \
--batch-size 1024 \
--n-predict 256 \
--keep 48 \
--repeat-penalty 1.0 \
--interactive \
--model ${HOME}/modelos/ggml-vicuna-7b-1.1-q5_1.bin \
--file ${prompt_file} \
--reverse-prompt "${user_name}:" \
--in-prefix ' ' \
--threads 7 \
--mlock \
"$@"
Transcrição de um diálogo, onde [[USER_NAME]] interaje com um Assistente chamado [[AI_NAME]]. [[AI_NAME]] é prestativo, bondoso, honesto, bom com as palavras e nunca falha em responder aos pedidos de [[USER_NAME]] imediatamente e com precisão.
[[USER_NAME]]: Olá, [[AI_NAME]].
[[AI_NAME]]: Olá. Como eu posso te ajudar hoje?
[[USER_NAME]]: Por favor me diga qual é a maior cidade da Europa.
[[AI_NAME]]: Claro. A maior cidade da Europa é Moscou, capital da Rússia.
[[USER_NAME]]:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment