paint-brush
Cómo ejecutar MPT-7B en AWS SageMaker: el competidor ChatGPT de MosaicMLpor@redgeoff
444 lecturas
444 lecturas

Cómo ejecutar MPT-7B en AWS SageMaker: el competidor ChatGPT de MosaicML

por Geoff Cox8m2023/07/19
Read on Terminal Reader

Demasiado Largo; Para Leer

La publicación del blog presenta el MPT-7B de MosaicML como una alternativa al ChatGPT de OpenAI para ejecutar modelos de chatbot en su propia infraestructura. Proporciona una guía paso a paso sobre cómo ejecutar MPT-7B en AWS SageMaker, destacando beneficios como el control de costos, la iteración fácil y la capacidad de transición a producción. La publicación también analiza las comparaciones de rendimiento y los desafíos con el modelo, y enfatiza la importancia de la privacidad de los datos y la rentabilidad.
featured image - Cómo ejecutar MPT-7B en AWS SageMaker: el competidor ChatGPT de MosaicML
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

En esta publicación de blog, lo guiaré paso a paso a través del proceso de ejecución del competidor ChatGPT de MosaicML, MPT-7B, en su propia instancia de AWS SageMaker.


¿Está entusiasmado con las capacidades de ChatGPT, pero le preocupa exponer sus datos confidenciales a OpenAI? Afortunadamente, existen alternativas que puede ejecutar en su propia infraestructura. Una de esas alternativas es MPT-7b de MosaicML, un competidor de ChatGPT, que exploraremos en esta publicación de blog.

Introducción a MosaicML y MPT-7B

MosaicML, adquirido recientemente por Databricks por 1300 millones de dólares , ha causado sensación en la comunidad de ML con su modelo MPT-7B, un supuesto competidor de ChatGPT. A pesar de su promesa, ejecutar este modelo puede ser desalentador debido a la escasez de documentación y sus grandes requisitos de recursos. Sin embargo, se puede ejecutar MPT-7B en AWS SageMaker en un cuaderno Jupyter, un entorno apto para principiantes y muy flexible para una iteración rápida. Esta configuración le permite probar la viabilidad del modelo y los requisitos de hardware antes de decidir pasar a producción.

Ejecución de MPT-7B en AWS SageMaker

Ejecutar MPT-7B en un cuaderno Jupyter en AWS SageMaker ofrece varios beneficios. No solo puede pagar solo por lo que usa y apagarlo cuando haya terminado, sino que la capacidad de volver a ejecutar fácilmente partes de su código sin tener que recargar el modelo ahorra tiempo durante el desarrollo iterativo. ¡Pero ten cuidado! Si olvida detener las instancias de su computadora portátil, los cargos pueden sumarse rápidamente.


Si bien este método es relativamente conveniente, hay algunas consideraciones que debe tener en cuenta. En primer lugar, la carga del modelo puede tardar hasta 20 minutos, incluso en una GPU de alto rendimiento, lo que hace que este proceso lleve un poco de tiempo. Además, el costo es un factor a considerar, ya que el costo de funcionamiento es de al menos $4 por hora. Deberá ejecutar MPT-7B en al menos una instancia p3.2xlarge ; algo más pequeño no parece factible. Si opta por EC2 en lugar de SageMaker, deberá solicitar permiso a AWS para usar una instancia p3.2xlarge .


En las siguientes secciones, lo explicaré paso a paso sobre cómo ejecutar el modelo MPT-7B en su propio cuaderno SageMaker jupyter:

Paso 1: abra la consola de SageMaker

Inicie la consola de AWS y busque SageMaker:


Busque SageMaker. Crédito de la imagen: Autor

Paso 2: crea una instancia de notebook

En el menú del lado izquierdo, seleccione Notebook->Instancias de Notebook :


Instancias de portátiles. Crédito de la imagen: Autor


Haga clic en el botón Crear instancia de cuaderno :


Crear instancia de cuaderno. Crédito de la imagen: Autor


Especifique un nombre de instancia. Elija el tipo de instancia m1.p3.2xlarge . Desafortunadamente, parece que se requiere una instancia tan poderosa como m1.p3.2xlarge , o de lo contrario su instancia puede quedarse sin memoria o tomar una cantidad excesiva de tiempo para responder incluso a las preguntas más simples. Sin embargo, tenga en cuenta que esta instancia costará aproximadamente $ 4 por hora, por lo que es importante controlar su uso cuidadosamente.


Especifique los detalles de la instancia del cuaderno. Crédito de la imagen: Autor


Cree un nuevo rol de IAM:


Crear un nuevo rol. Crédito de la imagen: Autor


Si su entorno de prueba no tiene datos particularmente confidenciales, puede otorgar acceso a cualquier depósito de S3 . De lo contrario, tendrás que ser más explícito.


Especifique el acceso S3. Crédito de la imagen: Autor


Haga clic en el botón Crear instancia de cuaderno :


Crear instancia de cuaderno. Crédito de la imagen: Autor


El cuaderno entonces estará en estado Pendiente . Es probable que esto dure unos 10 minutos:


Instancia de cuaderno pendiente. Crédito de la imagen: Autor


Mientras tanto, descargaremos un cuaderno para poder cargarlo después de que la instancia de AWS SageMaker haya terminado de aprovisionarse.

Paso 3 - Descarga el cuaderno

Diríjase al cuaderno en MPT-7B en AWS SageMaker.ipynb y descárguelo:


El cuaderno en Google Colab. Crédito de la imagen: Autor



Descarga el cuaderno. Crédito de la imagen: Autor


En este cuaderno notará dos bloques de código principales. El primer bloque carga el tokenizador y el 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')


El tokenizador se utiliza para codificar la pregunta enviada al modelo y decodificar la respuesta del modelo. Además, obtenemos la especificación del dispositivo para nuestra GPU para que podamos configurar el modelo para utilizarlo más adelante:


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


Tenga en cuenta el uso de stopping_critera , que es necesario o, de lo contrario, el modelo comenzará a balbucear, incluso después de haber respondido a nuestra pregunta.


Consulte los parámetros de generación del modelo si desea explorar las diferentes opciones.


Ahora, subamos este bloc de notas a SageMaker.

Paso 4 - Cargue el cuaderno

Con suerte, para este momento su instancia de notebook de SageMaker habrá terminado de aprovisionarse. Cuando lo haya hecho, haga clic en el vínculo Abrir Jupyter :


Abre Jupyter. Crédito de la imagen: Autor


Luego, haga clic en el botón Cargar en la esquina superior derecha de su pantalla y seleccione el cuaderno que acaba de descargar:


Sube el cuaderno. Crédito de la imagen: Autor


Establezca el núcleo en conda_python3 :


Establecer el núcleo. Crédito de la imagen: Autor


Paso 5 - Ejecute el cuaderno

Seleccione Celda -> Ejecutar todo :


Ejecutar todas las celdas. Crédito de la imagen: Autor


Aparecerá un logotipo de reloj de arena en la pestaña del navegador:


Espera el cuaderno. Crédito de la imagen: Autor


Luego deberá esperar unos 10 minutos para que se descargue el modelo:


Descargar modelo. Crédito de la imagen: Autor


Después de que se ejecute, verá la respuesta a la pregunta Explícame la diferencia entre fisión nuclear y fusión :


Explícame la diferencia entre fisión nuclear y fusión. Crédito de la imagen: Autor


Dado que el modelo y el tokenizador ya se cargaron arriba, simplemente puede modificar el bloque de código ask_question y hacer clic en el botón Ejecutar para hacer otras preguntas. Esto le evitará gastar 10 minutos cada vez que quiera probar una nueva pregunta.


¿Cual es la capital de Francia?. Crédito de la imagen: Autor


Paso 6 - Detener el portátil

Tan pronto como haya terminado de probar el modelo, querrá regresar a su lista de instancias de portátiles y detenerlo. Si no lo hace, $4/hr se acumularán muy rápidamente 💸


Detener el cuaderno. Crédito de la imagen: Autor


Comparación de rendimiento

En términos de rendimiento, mis pruebas preliminares sugieren que los resultados de MPT-7B podrían no ser tan buenos como los de ChatGPT. Hace un trabajo decente respondiendo preguntas como:

  • Cual es la capital de Francia? ,
  • Explícame la diferencia entre fisión nuclear y fusión.
  • Escriba el código de Python que convierte un csv en pdf .


Pero para preguntas como _¿Cuál es la capital de Belice?_ falla horriblemente:


¿Cuál es la capital de Belice?. Crédito de la imagen: Autor


Actualmente estoy recopilando más datos y realizaré un análisis comparativo completo en una publicación de blog de seguimiento. En esa publicación, compararé el rendimiento de preguntas y respuestas de MPT-7B, MPT-30B, Falcon-40b y ChatGPT utilizando el historial de conversación real.

De las pruebas a la producción

Una vez que esté listo para la transición de las pruebas a la producción, SageMaker ofrece un beneficio adicional: la capacidad de crear un punto final para su modelo. Con SageMaker, puede escalar automáticamente según la demanda hasta el punto final, optimizando sus recursos.

Consejos adicionales

Tenga en cuenta que es fácil que su proceso se bifurque mientras se ejecuta en un cuaderno Jupyter y se quede sin memoria. Si esto sucede, simplemente apague el kernel y ejecute todos los comandos nuevamente.

Si tiene curiosidad por ejecutar este modelo en una plataforma que no sea AWS, Google Colab Pro es otra opción viable a $9/mes. Sin embargo, según nuestras pruebas, descubrimos que agotamos los créditos proporcionados en unas pocas horas. 😳


Otro desafío que puede enfrentar es la incapacidad de utilizar la optimización de Triton en SageMaker debido a una incompatibilidad de la versión CUDA. Desafortunadamente, las instancias P3 actuales de AWS no incluyen una versión reciente de CUDA. Por lo tanto, si desea utilizar la optimización de Triton, deberá crear un contenedor EC2 con acceso a la línea de comandos. Sin embargo, es importante tener en cuenta que también necesitará un permiso especial de AWS Support para ejecutar una instancia con 8 VCPU. En una publicación futura, proporcionaré una guía detallada sobre cómo integrar Triton y utilizar un proveedor de GPU en la nube más rentable, como Lambda Labs .

Pensamientos finales

Si bien el MPT-7B de MosaicML ofrece una alternativa viable al ChatGPT de OpenAI, presenta su propio conjunto de desafíos. Ejecutar el modelo puede llevar mucho tiempo, ser costoso y falta la documentación disponible. Sin embargo, la capacidad de mantener el modelo interno y proteger sus datos para que no queden expuestos a OpenAI puede ser atractivo para ciertos casos de uso.


SageMaker ofrece una gran comodidad para probar rápidamente el modelo y brinda la flexibilidad para pasar a producción cuando esté listo. Tanto si acaba de empezar con el MPT-7B como si lo ha estado usando durante un tiempo, esperamos que esta guía le haya proporcionado información valiosa.


Estén atentos a nuestra próxima publicación de blog, donde profundizaremos en las comparaciones de rendimiento entre MPT-7B, MPT-30B, Falcon-40b y ChatGPT.


Consulte los siguientes enlaces si está interesado en obtener más información sobre MPT-7B o su variante más grande, MPT-30B .


Y recuerde, ya sea que esté trabajando con ChatGPT o MPT-7B, la clave es asegurarse de que su caso de uso se cumpla sin comprometer la privacidad de los datos y la rentabilidad. ¡Feliz retoque!

¿Quiere una solución llave en mano para usar MPT o ChatGPT con sus datos?

En MindfulDataAI.com , ofrecemos ChatGPT para empresas. Si está interesado en aprovechar ChatGPT, MPT u otros modelos con los datos de su empresa, comuníquese con nosotros.