Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implante o Llama2 nas GPUs do Oracle Cloud Infrastructure
Introdução
LLAMA2 é uma arquitetura de aprendizado profundo de última geração projetada para dimensionar modelos de aprendizado de máquina com eficiência em dispositivos com recursos limitados. A plataforma é incrivelmente escalável e adaptável, permitindo que as organizações processem enormes quantidades de dados com facilidade, extraiam insights significativos e reajam rapidamente às condições de mercado em constante mudança. Um dos principais recursos do Llama2 é sua capacidade de processar dados quase em tempo real, o que permite que as empresas respondam prontamente às mudanças em seu ambiente. Além disso, ele suporta uma variedade de origens de dados e estruturas de processamento, incluindo Apache Kafka, Apache Flink, Apache Spark e assim por diante. Isso significa que os desenvolvedores podem escolher as melhores ferramentas para suas necessidades específicas.
O Llama2 também oferece vários outros recursos úteis, como suporte para streaming de SQL, integração com ferramentas populares de big data como Hadoop e YARN e fortes medidas de segurança para garantir a privacidade e a integridade dos dados. No geral, o Llama2 é uma ferramenta poderosa que pode ajudar as organizações a processar e analisar com eficiência grandes conjuntos de dados, dando a elas uma vantagem competitiva no cenário digital acelerado de hoje.
A arquitetura consiste em vários componentes trabalhando juntos para gerar respostas semelhantes às humanas. No núcleo do modelo está o codificador do transformador, que toma em uma sequência de palavras ou texto e produz uma série de vetores que representam a entrada. Esses vetores são então passados através de uma Rede Neural Feedforward (FFNN) e uma camada de conexões residuais para gerar a saída final.
O FFNN é composto por camadas totalmente conectadas que processam as sequências de entrada e produzem incorporações contextualizadas. As conexões residuais permitem que o modelo aprenda padrões mais complexos nos dados e melhore seu desempenho geral.
Além desses componentes principais, o Llama LLM também inclui vários outros módulos para ajudar a ajustar o modelo e melhorar sua precisão. Estes incluem um tokenizer para converter entradas de texto em tokens numéricos, um vocabulário para armazenar subpalavras aprendidas e uma máscara para evitar viés de exposição durante o treinamento.
A Geração de Texto WebUI é uma interface de usuário da Web gradio para Modelos de Linguagem Grande. Ele suporta ferramentas de API e linha de comando, bem como se eles são sua coisa. Este WebUI suporta vários backends de modelo que incluem transformadores, llama.cpp, ExLlama, ExLlamaV2, AutoGPTQ, GPTQ-for-Llama,CTransformers e AutoAWQ. Também suporta modelos LoRA, ajuste fino, treinamento de um novo LoRA usando QLoRA. Ele tem estrutura de extensões para carregar suas extensões favoritas para seus modelos. Ele tem um servidor de API compatível com OpenAI.
Objetivos
- Instalaremos tudo o necessário para executar os modelos WebUI e carregar os modelos Llama2 para executar a geração de texto.
Pré-requisitos
-
Locação da Oracle Cloud Infrastructure (OCI) com limites de GPU A10.
-
Uma VCN (Rede Virtual na Nuvem) do OCI existente com pelo menos uma sub-rede pública e limites para IP público.
-
Um checkpoint de Modelo Llama2 do seu Huggingface Creator favorito. Certifique-se de que seu modelo suporta os backends mencionados acima.
Tarefa 1: Provisionar uma instância de computação de GPU no OCI
-
Inicie uma instância de computação no OCI com VCN existente com sub-rede pública. Para obter mais informações, consulte Iniciar Instância de Computação.
-
Escolha uma dessas formas GPU.A10 disponíveis.
VM.GPU.A10.1 VM.GPU.A10.2 BM.GPU.A10.4 -
Ao iniciar uma instância de computação, altere a forma para uma das formas acima.
-
Se sua tenancy não tiver um limite de serviço definido para GPU.A10, essas formas não estarão na lista de formas.
-
Para verificar seus limites de tenancy na Console do OCI, defina a região na qual você provisionará uma instância de computação GPU.A10, abra o menu de navegação e clique em Governança e Administração.
-
Em Gerenciamento de Tenancy, selecione Limites, Cotas e Uso.
-
Selecione o Serviço para
Compute, selecione um dos domínios de disponibilidade no campo de escopo e digiteGPU.A10no campo de recurso. -
Selecione GPUs para instâncias de VM e BM baseadas em A10

-
-
Os limites de computação são por domínio de disponibilidade. Verifique se o limite está definido em qualquer um dos domínios de disponibilidade da região. Se o limite de serviço for definido como
0para todos os domínios de disponibilidade, clique no link solicitar um aumento do limite de serviço e envie uma solicitação de aumento de limite para esse recurso.Observação: Para acessar Limites, Cotas e Uso, você deve ser membro do grupo de administradores da tenancy ou seu grupo deve ter uma política designada para ler LimitsAndUsageViewers.
- Para obter mais informações sobre limites de serviço, consulte Limites de Serviço.
-
Atualmente, as configurações de computação GPU.A10 da OCI suportam Oracle Linux, Ubuntu e Rocky Linux. O Windows é suportado apenas por formas de VM.
Observação: O Rocky Linux não é oficialmente suportado pela NVIDIA.
-
Ao provisionar uma instância de computação no OCI, use uma imagem padrão do SO ou uma Imagem ativada por GPU. Se você usar a imagem do sistema operacional padrão, será necessário instalar o driver vGPU NVIDIA.

-
Expanda a seção de volume de inicialização para aumentar o volume de inicialização para pelo menos 250 GB e aumente o VPU para Desempenho Superior para obter uma leitura/gravação decente para melhor inferência.

Inicie a instância com os parâmetros acima.
Tarefa 2: Instalar Pré-requisitos para Llama2
-
Como os drivers NVIDIA estão incluídos na imagem de compilação da GPU do Oracle Linux, podemos verificar sua presença e funcionalidade executando o comando
nvidia-smi. Isso garantirá que tudo esteja configurado corretamente e que os drivers de GPU estejam funcionando conforme o esperado.
-
Crescer FileSystem: A memória do sistema de instâncias do OCI vem com o padrão 46.6GB. Como aumentamos nosso volume de inicialização para 300 GB, vamos expandir nosso sistema de arquivos com o comando OCI criado do OCI Util.
Para expandir o sistema de arquivos em sua instância do OCI após aumentar o volume de inicialização para 300 GB, você pode usar o comando integrado do OCI. Siga as etapas abaixo.
-
Verificar o uso do disco atual: antes de redimensionar o sistema de arquivos, é uma boa prática verificar o uso do disco atual para garantir que ele reflita o tamanho do volume de inicialização aumentado. Você pode usar o comando
dfpara essa finalidade. Verifique se o espaço disponível corresponde ao novo tamanho do volume de inicialização (300 GB).bash df -h -
Redimensionar o Sistema de Arquivos: Use o comando do utilitário OCI para redimensionar o sistema de arquivos e fazer uso do armazenamento aumentado. O comando exato pode variar dependendo do SO específico e do sistema de arquivos que você está usando. O item abaixo é usado para o Oracle Linux 8.
sudo /usr/libexec/oci-growfsDigite
yquando solicitado a confirmar que você está estendendo a partição. -
Verificar a Expansão do Sistema de Arquivos: Depois de executar o comando de redimensionamento, verifique o uso do disco novamente para confirmar se o sistema de arquivos foi expandido com sucesso.
bash df -h
Agora ele deve refletir o tamanho aumentado do sistema de arquivos. Ao seguir essas etapas, você deverá ser capaz de expandir o sistema de arquivos em sua instância do OCI para utilizar o espaço de armazenamento adicional fornecido pelo volume de inicialização aumentado.

-
-
Instale
Python 3.10.6no Oracle Linux 8 usando o comando a seguir.sudo dnf update -y sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make -y wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz tar -xf Python-3.10.6.tar.xz cd Python-3.10.6/ ./configure --enable-optimizations make -j 2 nproc sudo make altinstall python3.10 -V -
Instale o git para clonar o repositório git.
sudo dnf install git -
Instale
condausando o comando a seguir.mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm -rf ~/miniconda3/miniconda.sh ~/miniconda3/bin/conda init bash -
Crie o ambiente
conda.conda create -n llama2 python=3.10.9 # llama2 being the conda environment name conda activate llama2 -
Instale
PyTorch 2.0usando o comando a seguir.pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -
Clone
text-generation-webui. Você deve ter o repositóriotext-generation-webuiem seu diretório clonado.git clone https://github.com/oobabooga/text-generation-webui -
Instale
requirements.txte altere o diretório paratext-generation-webuie execute o comando a seguir.pip3 install -r requirements.txt -
Atualize as regras de firewall para permitir o tráfego da porta
7860.sudo firewall-cmd --list-all # To check existing added ports sudo firewall-cmd --zone=public --permanent --add-port 7860/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all # Confirm that port has been added.
Tarefa 3: Executar Llama2
-
Com os pré-requisitos instalados com sucesso, estamos prontos para avançar com a execução do
text-generation-webui. Navegue até o diretóriotext-generation-webuie execute o comando a seguir.python server.py --sdp-attention --listenO resultado desse processo deve carregar os módulos essenciais e iniciar o servidor de inferência na porta
7860.
-
Depois de confirmar uma implantação bem-sucedida com o servidor em execução na porta
7860, conforme demonstrado acima, vamos prosseguir para acessar o aplicativotext-generation-webui. Abra o Web browser e informe o seguinte endereço:http://<PublicIP>:7860, substituindo<PublicIP>pelo endereço IP público da instância.Agora, o aplicativo deve ser carregado e exibido conforme ilustrado abaixo. Navegue até o modelo de seção na parte superior, conforme destacado.

-
Na seção Modelo, informe o repositório huggingface para o modelo Llama2 desejado. Para nossos propósitos, selecionamos o modelo GPTQ do repositório huggingface
TheBloke/Llama-2-13B-chat-GPTQ. Baixe o modelo e carregue-o na seção do modelo.
-
Depois de carregá-lo, navegue até a seção Chat para iniciar a geração de texto com Llama2.

Tarefa 4: Implantar Geração de Texto WebUI via Gerenciador de Serviços systemctl
-
Crie um arquivo
llama2.serviceno caminho/etc/systemd/systeme digite o texto a seguir.[Unit] Description=systemd service start llama2 [Service] WorkingDirectory=/home/opc/text-generation-webui ExecStart=bash /home/opc/text-generation-webui/start.sh User=opc [Install] WantedBy=multi-user.target -
Certifique-se de alterar o diretório de trabalho. Aqui mencionamos
start.shcomo arquivo de execução, vamos criar esse arquivo no diretóriotext-generation-webuie informar o texto a seguir.#!/bin/sh # - the script is ran via anaconda python # - output is not buffered (-u) # - stdout & stderr are stored to a log file # - we're executing the working directory specified in the systemd service file /home/opc/miniconda3/envs/llama2/bin/python server.py --sdp-attention --listen -
Isso garante que sempre use seu ambiente conda Llama2. Não é desejável ativar o ambiente conda do serviço systemd. Portanto, usamos shell script para iniciar e, em seguida, usar shell script para executar o aplicativo. Execute os comandos a seguir para recarregar e ativar/iniciar o serviço.
sudo systemctl daemon-reload sudo systemctl enable llama2.service sudo systemctl start llama2.service -
Execute o comando abaixo para verificar o status do serviço.
sudo systemctl start llama2.service
Links Relacionados
Agradecimentos
- Autor - Abhiram Ampabathina (Arquiteto de Nuvem Sênior)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Llama2 on Oracle Cloud Infrastructure GPUs
F91996-01
January 2024
Copyright © 2024, Oracle and/or its affiliates.