paint-brush
Como executar MPT-7B no AWS SageMaker: Concorrente ChatGPT do MosaicMLpor@redgeoff
444 leituras
444 leituras

Como executar MPT-7B no AWS SageMaker: Concorrente ChatGPT do MosaicML

por Geoff Cox8m2023/07/19
Read on Terminal Reader

Muito longo; Para ler

A postagem do blog apresenta o MPT-7B da MosaicML como uma alternativa ao ChatGPT da OpenAI para executar modelos de chatbot em sua própria infraestrutura. Ele fornece um guia passo a passo sobre como executar o MPT-7B no AWS SageMaker, destacando benefícios como controle de custos, fácil iteração e capacidade de transição para produção. A postagem também discute comparações de desempenho e desafios com o modelo, enfatizando a importância da privacidade dos dados e da relação custo-benefício.
featured image - Como executar MPT-7B no AWS SageMaker: Concorrente ChatGPT do MosaicML
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

Nesta postagem de blog, vou guiá-lo passo a passo pelo processo de execução do concorrente ChatGPT do MosaicML, MPT-7B, em sua própria instância do AWS SageMaker.


Você está animado com os recursos do ChatGPT, mas está preocupado em expor seus dados confidenciais ao OpenAI? Felizmente, existem alternativas que você pode executar em sua própria infraestrutura. Uma dessas alternativas é o MPT-7b da MosaicML, um concorrente do ChatGPT, que exploraremos nesta postagem do blog.

Introdução ao MosaicML e MPT-7B

A MosaicML, recentemente adquirida pela Databricks por US$ 1,3 bilhão , vem causando sensação na comunidade ML com seu modelo MPT-7B, um suposto concorrente do ChatGPT. Apesar de sua promessa, a execução desse modelo pode ser assustadora devido à documentação esparsa e seus pesados requisitos de recursos. No entanto, é possível executar o MPT-7B no AWS SageMaker em um notebook Jupyter, um ambiente amigável para iniciantes e altamente flexível para iteração rápida. Essa configuração permite que você teste a viabilidade do modelo e os requisitos de hardware antes de decidir passar para a produção.

Executando MPT-7B no AWS SageMaker

A execução do MPT-7B em um notebook Jupyter no AWS SageMaker oferece vários benefícios. Não apenas você pode pagar apenas pelo que usa e desligá-lo quando terminar, mas também a capacidade de executar novamente partes de seu código facilmente sem precisar recarregar o modelo economiza tempo durante o desenvolvimento iterativo. Mas cuidado! Se você esquecer de parar suas instâncias de notebook, as cobranças podem aumentar rapidamente.


Embora esse método seja relativamente conveniente, há algumas considerações que você deve levar em conta. Em primeiro lugar, carregar o modelo pode levar até 20 minutos mesmo em uma GPU de alto desempenho, tornando esse processo um tanto demorado. Além disso, o custo é um fator a ser considerado, pois o custo operacional é de pelo menos US$ 4 por hora. Você precisará executar o MPT-7B em pelo menos uma instância p3.2xlarge ; qualquer coisa menor não parece viável. Se você optar pelo EC2 em vez do SageMaker, terá que pedir permissão à AWS para usar uma instância p3.2xlarge .


Nas próximas seções, mostrarei passo a passo como executar o modelo MPT-7B em seu próprio notebook SageMaker jupyter:

Etapa 1 - Abra o console do SageMaker

Abra o Console AWS e procure por SageMaker:


Pesquise por SageMaker. Crédito da imagem: Autor

Etapa 2 - Criar uma instância de bloco de anotações

No menu do lado esquerdo, selecione Notebook->Notebook instances :


Instâncias de notebook. Crédito da imagem: Autor


Clique no botão Criar instância de notebook :


Criar instância de notebook. Crédito da imagem: Autor


Especifique um nome de instância. Escolha o tipo de instância m1.p3.2xlarge . Infelizmente, parece que uma instância tão poderosa quanto m1.p3.2xlarge é necessária, ou então sua instância pode ficar sem memória ou levar muito tempo para responder até mesmo às perguntas mais simples. No entanto, observe que essa instância custará aproximadamente US$ 4/hora, por isso é importante monitorar seu uso com cuidado.


Especifique os detalhes da instância do notebook. Crédito da imagem: Autor


Crie uma nova função do IAM:


Crie uma nova função. Crédito da imagem: Autor


Se seu ambiente de teste não tiver dados particularmente confidenciais, você poderá conceder acesso a Any S3 bucket . Caso contrário, você precisará ser mais explícito.


Especifique o acesso S3. Crédito da imagem: Autor


Clique no botão Criar instância de notebook :


Criar instância de notebook. Crédito da imagem: Autor


O bloco de anotações ficará então em um status Pendente . Isso provavelmente durará cerca de 10 minutos:


Instância de notebook pendente. Crédito da imagem: Autor


Enquanto isso, faremos o download de um notebook para que possamos carregá-lo depois que a instância do AWS SageMaker terminar o provisionamento.

Passo 3 - Baixe o notebook

Acesse o notebook em MPT-7B no AWS SageMaker.ipynb e faça o download:


O notebook no Google Colab. Crédito da imagem: Autor



Baixe o caderno. Crédito da imagem: Autor


Neste bloco de anotações, você observará dois blocos de código principais. O primeiro bloco carrega o tokenizador e modelo MPT-7B:


 from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded')


O tokenizador é usado para codificar a pergunta enviada ao modelo e decodificar a resposta do modelo. Além disso, obtemos a especificação do dispositivo para nossa GPU para que possamos configurar o modelo para utilizá-lo posteriormente:


 import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds")


Observe o uso de stopping_critera , que é necessário, caso contrário, o modelo começará a tagarelar, mesmo depois de responder à nossa pergunta.


Veja o modelo gerar parâmetros se você quiser explorar as diferentes opções.


Agora, vamos carregar este bloco de anotações no SageMaker.

Etapa 4 - Carregar o bloco de anotações

Esperamos que, a essa altura, sua instância de bloco de anotações do SageMaker tenha terminado de ser provisionada. Quando tiver, clique no link Open Jupyter :


Abra o Jupyter. Crédito da imagem: Autor


Em seguida, clique no botão Upload no canto superior direito da tela e selecione o notebook que você acabou de baixar:


Carregue o caderno. Crédito da imagem: Autor


Defina o kernel como conda_python3 :


Defina o kernel. Crédito da imagem: Autor


Etapa 5 - Execute o notebook

Selecione Célula -> Executar tudo :


Execute todas as células. Crédito da imagem: Autor


Um logotipo de ampulheta aparecerá na guia do navegador:


Aguarde o caderno. Crédito da imagem: Autor


Você precisará aguardar cerca de 10 minutos para que o modelo seja baixado:


Baixar modelo. Crédito da imagem: Autor


Após a execução, você verá a resposta para a pergunta Explique-me a diferença entre fissão e fusão nuclear :


Explique-me a diferença entre fissão e fusão nuclear. Crédito da imagem: Autor


Como o model e o tokenizer já foram carregados acima, você pode simplesmente modificar o bloco de código ask_question e clicar no botão Run para fazer qualquer outra pergunta. Isso evitará que você gaste 10 minutos cada vez que quiser testar uma nova pergunta.


Qual é a capital da França?. Crédito da imagem: Autor


Passo 6 - Pare o notebook

Assim que terminar de testar o modelo, volte para sua lista de instâncias de notebook e interrompa-o. Se não o fizer, $ 4 / hora aumentará muito rapidamente 💸


Pare o caderno. Crédito da imagem: Autor


Comparação de desempenho

Em termos de desempenho, meus testes preliminares sugerem que os resultados do MPT-7B podem não ser tão bons quanto os do ChatGPT. Ele faz um trabalho decente respondendo a perguntas como:

  • Qual é a capital da França? ,
  • Explique-me a diferença entre fissão e fusão nuclear
  • Escreva um código python que converta um csv em pdf .


Mas para perguntas como_Qual é a capital de Belize?_ falha terrivelmente:


Qual é a capital de Belize?. Crédito da imagem: Autor


No momento, estou coletando mais dados e conduzirei uma análise comparativa abrangente em uma postagem de blog de acompanhamento. Nessa postagem, compararei o desempenho de perguntas e respostas de MPT-7B, MPT-30B, Falcon-40b e ChatGPT usando o histórico de conversação real.

Do teste à produção

Assim que estiver pronto para fazer a transição do teste para a produção, o SageMaker oferece um benefício adicional - a capacidade de criar um endpoint para seu modelo. Com o SageMaker, você pode dimensionar automaticamente com base na demanda para o endpoint, otimizando seus recursos.

Dicas Adicionais

Esteja ciente de que é fácil para o seu processo ser bifurcado durante a execução em um notebook Jupyter e ficar sem memória. Se isso acontecer, simplesmente desligue o kernel e execute todos os comandos novamente.

Se você está curioso para executar este modelo em uma plataforma diferente da AWS, o Google Colab Pro é outra opção viável por US$ 9/mês. No entanto, com base em nossos testes, descobrimos que esgotamos os créditos fornecidos em apenas algumas horas. 😳


Outro desafio que você pode enfrentar é a incapacidade de utilizar a otimização Triton no SageMaker devido a uma incompatibilidade de versão CUDA. Infelizmente, as instâncias P3 atuais da AWS não incluem uma versão CUDA recente. Portanto, se você deseja utilizar a otimização do Triton, precisará criar um contêiner EC2 com acesso à linha de comando. No entanto, é importante observar que você também precisará de permissão especial do AWS Support para executar uma instância com 8 VCPUs. Em uma postagem futura, fornecerei um guia detalhado sobre como integrar o Triton e utilizar um provedor de nuvem de GPU mais econômico, como o Lambda Labs .

Pensamentos finais

Embora o MPT-7B da MosaicML ofereça uma alternativa viável ao ChatGPT da OpenAI, ele apresenta seu próprio conjunto de desafios. Executar o modelo pode ser demorado, caro e falta a documentação disponível. No entanto, a capacidade de manter o modelo interno e proteger seus dados da exposição ao OpenAI pode ser atraente para determinados casos de uso.


O SageMaker oferece grande conveniência para testar rapidamente o modelo e oferece flexibilidade para fazer a transição para a produção quando você estiver pronto. Se você está apenas começando com o MPT-7B ou já o usa há algum tempo, esperamos que este guia tenha fornecido informações valiosas.


Fique atento à nossa próxima postagem no blog, onde nos aprofundaremos nas comparações de desempenho entre MPT-7B, MPT-30B, Falcon-40b e ChatGPT.


Consulte os links a seguir se estiver interessado em aprender mais sobre o MPT-7B ou sua variante maior, MPT-30B .


E lembre-se, esteja você trabalhando com ChatGPT ou MPT-7B, a chave é garantir que seu caso de uso seja atendido sem comprometer a privacidade dos dados e a economia. Feliz mexer!

Quer uma solução pronta para usar MPT ou ChatGPT com seus dados?

Em MindfulDataAI.com , oferecemos ChatGPT para empresas. Se você estiver interessado em alavancar ChatGPT, MPT ou outros modelos com os dados da sua empresa, entre em contato conosco.