Inteligencia de datos generativa

Databricks DBRX ya está disponible en Amazon SageMaker JumpStart | Servicios web de Amazon

Fecha:

Hoy nos complace anunciar que el modelo DBRX, un modelo de lenguaje grande (LLM) abierto y de propósito general desarrollado por Databricks, está disponible para los clientes a través de JumpStart de Amazon SageMaker para implementar con un clic para ejecutar la inferencia. El DBRX LLM emplea una arquitectura de mezcla de expertos (MoE) detallada, previamente entrenada en 12 billones de tokens de datos cuidadosamente seleccionados y una longitud de contexto máxima de 32,000 tokens.

Puede probar este modelo con SageMaker JumpStart, un centro de aprendizaje automático (ML) que brinda acceso a algoritmos y modelos para que pueda comenzar rápidamente con ML. En esta publicación, explicamos cómo descubrir e implementar el modelo DBRX.

¿Qué es el modelo DBRX?

DBRX es un LLM sofisticado solo para decodificadores construido sobre una arquitectura de transformador. Emplea una arquitectura MoE detallada, que incorpora 132 mil millones de parámetros totales, de los cuales 36 mil millones están activos para cualquier entrada determinada.

El modelo se sometió a un entrenamiento previo utilizando un conjunto de datos que consta de 12 billones de tokens de texto y código. A diferencia de otros modelos MoE abiertos como Mixtral y Grok-1, DBRX presenta un enfoque detallado, utilizando una mayor cantidad de expertos más pequeños para un rendimiento optimizado. En comparación con otros modelos MoE, DBRX tiene 16 expertos y elige 4.

El modelo está disponible bajo la licencia Databricks Open Model, para su uso sin restricciones.

¿Qué es SageMaker JumpStart?

SageMaker JumpStart es una plataforma totalmente administrada que ofrece modelos básicos de última generación para diversos casos de uso, como redacción de contenido, generación de código, respuesta a preguntas, redacción, resumen, clasificación y recuperación de información. Proporciona una colección de modelos previamente entrenados que puede implementar rápidamente y con facilidad, acelerando el desarrollo y la implementación de aplicaciones de aprendizaje automático. Uno de los componentes clave de SageMaker JumpStart es Model Hub, que ofrece un amplio catálogo de modelos previamente entrenados, como DBRX, para una variedad de tareas.

Ahora puede descubrir e implementar modelos DBRX con unos pocos clics en Estudio Amazon SageMaker o mediante programación a través del SDK de Python de SageMaker, lo que le permite derivar el rendimiento del modelo y los controles MLOps con Amazon SageMaker características como Canalizaciones de Amazon SageMaker, Depurador de Amazon SageMakero registros de contenedor. El modelo se implementa en un entorno seguro de AWS y bajo los controles de su VPC, lo que ayuda a brindar seguridad de los datos.

Descubra modelos en SageMaker JumpStart

Puede acceder al modelo DBRX a través de SageMaker JumpStart en la interfaz de usuario de SageMaker Studio y el SDK de SageMaker Python. En esta sección, repasamos cómo descubrir los modelos en SageMaker Studio.

SageMaker Studio es un entorno de desarrollo integrado (IDE) que proporciona una única interfaz visual basada en web donde puede acceder a herramientas especialmente diseñadas para realizar todos los pasos de desarrollo de ML, desde la preparación de datos hasta la creación, capacitación e implementación de sus modelos de ML. Para obtener más detalles sobre cómo comenzar y configurar SageMaker Studio, consulte Estudio Amazon SageMaker.

En SageMaker Studio, puede acceder a SageMaker JumpStart eligiendo Buen inicio en el panel de navegación.

Desde la página de inicio de SageMaker JumpStart, puede buscar "DBRX" en el cuadro de búsqueda. Los resultados de la búsqueda mostrarán Instrucción DBRX y Base DBRX.

Puede elegir la tarjeta de modelo para ver detalles sobre el modelo, como la licencia, los datos utilizados para entrenar y cómo utilizar el modelo. También encontrarás el Despliegue para implementar el modelo y crear un punto final.

Implementar el modelo en SageMaker JumpStart

La implementación comienza cuando eliges el Despliegue botón. Una vez finalizada la implementación, verá que se crea un punto final. Puede probar el punto final pasando una carga útil de solicitud de inferencia de muestra o seleccionando la opción de prueba mediante el SDK. Cuando seleccione la opción para usar el SDK, verá un código de ejemplo que puede usar en el editor de cuaderno de su elección en SageMaker Studio.

Base DBRX

Para implementar usando el SDK, comenzamos seleccionando el modelo base DBRX, especificado por el model_id con valor huggingface-llm-dbrx-base. Puede implementar cualquiera de los modelos seleccionados en SageMaker con el siguiente código. De manera similar, puede implementar DBRX Instruct utilizando su propio ID de modelo.

from sagemaker.jumpstart.model import JumpStartModel

accept_eula = True

model = JumpStartModel(model_id="huggingface-llm-dbrx-base")
predictor = model.deploy(accept_eula=accept_eula)

Esto implementa el modelo en SageMaker con configuraciones predeterminadas, incluido el tipo de instancia predeterminado y las configuraciones de VPC predeterminadas. Puede cambiar estas configuraciones especificando valores no predeterminados en JumpStartModelo. El valor de Eula debe definirse explícitamente como Verdadero para poder aceptar el acuerdo de licencia de usuario final (EULA). También asegúrese de tener el límite de servicio a nivel de cuenta para usar ml.p4d.24xlarge o ml.pde.24xlarge para el uso de endpoints como una o más instancias. Puedes seguir las instrucciones. esta página para solicitar un aumento de cuota de servicio.

Una vez implementado, puede ejecutar inferencias contra el punto final implementado a través del predictor de SageMaker:

payload = {
    "inputs": "Hello!",
    "parameters": {
        "max_new_tokens": 10,
    },
}
predictor.predict(payload)

Indicaciones de ejemplo

Puede interactuar con el modelo DBRX Base como cualquier modelo de generación de texto estándar, donde el modelo procesa una secuencia de entrada y genera las siguientes palabras predichas en la secuencia. En esta sección, proporcionamos algunos mensajes de ejemplo y resultados de muestra.

Codigo de GENERACION

Usando el ejemplo anterior, podemos usar mensajes de generación de código de la siguiente manera:

payload = { 
      "inputs": "Write a function to read a CSV file in Python using pandas library:", 
      "parameters": { 
          "max_new_tokens": 30, }, } 
           response = predictor.predict(payload)["generated_text"].strip() 
           print(response)

El siguiente es el resultado:

import pandas as pd 
df = pd.read_csv("file_name.csv") 
#The above code will import pandas library and then read the CSV file using read_csv

Análisis de los sentimientos

Puede realizar un análisis de opinión utilizando un mensaje como el siguiente con DBRX:

payload = {
"inputs": """
Tweet: "I am so excited for the weekend!"
Sentiment: Positive

Tweet: "Why does traffic have to be so terrible?"
Sentiment: Negative

Tweet: "Just saw a great movie, would recommend it."
Sentiment: Positive

Tweet: "According to the weather report, it will be cloudy today."
Sentiment: Neutral

Tweet: "This restaurant is absolutely terrible."
Sentiment: Negative

Tweet: "I love spending time with my family."
Sentiment:""",
"parameters": {
"max_new_tokens": 2,
},
}
response = predictor.predict(payload)["generated_text"].strip()
print(response)

El siguiente es el resultado:

Respuesta a la pregunta

Puede utilizar un mensaje de respuesta a preguntas como el siguiente con DBRX:

# Question answering
payload = {
    "inputs": "Respond to the question: How did the development of transportation systems, such as railroads and steamships, impact global trade and cultural exchange?",
    "parameters": {
        "max_new_tokens": 225,
    },
}
response = predictor.predict(payload)["generated_text"].strip()
print(response)

El siguiente es el resultado:

The development of transportation systems, such as railroads and steamships, impacted global trade and cultural exchange in a number of ways. 
The documents provided show that the development of these systems had a profound effect on the way people and goods were able to move around the world. 
One of the most significant impacts of the development of transportation systems was the way it facilitated global trade. 
The documents show that the development of railroads and steamships made it possible for goods to be transported more quickly and efficiently than ever before. 
This allowed for a greater exchange of goods between different parts of the world, which in turn led to a greater exchange of ideas and cultures. 
Another impact of the development of transportation systems was the way it facilitated cultural exchange. The documents show that the development of railroads and steamships made it possible for people to travel more easily and quickly than ever before. 
This allowed for a greater exchange of ideas and cultures between different parts of the world. Overall, the development of transportation systems, such as railroads and steamships, had a profound impact on global trade and cultural exchange.

Instrucción DBRX

La versión adaptada a las instrucciones de DBRX acepta instrucciones formateadas en las que los roles de conversación deben comenzar con un mensaje del usuario y alternar entre las instrucciones del usuario y el asistente (instrucciones DBRX). El formato de instrucción debe respetarse estrictamente; de ​​lo contrario, el modelo generará resultados subóptimos. La plantilla para crear un mensaje para el modelo Instruct se define de la siguiente manera:

<|im_start|>system
{system_message} <|im_end|>
<|im_start|>user
{human_message} <|im_end|>
<|im_start|>assistantn

<|im_start|> y <|im_end|> son tokens especiales para el comienzo de la cadena (BOS) y el final de la cadena (EOS). El modelo puede contener múltiples turnos de conversación entre el sistema, el usuario y el asistente, lo que permite la incorporación de ejemplos breves para mejorar las respuestas del modelo.

El siguiente código muestra cómo puede formatear el mensaje en formato de instrucción:

from typing import Dict, List

def format_instructions(instructions: List[Dict[str, str]]) -> List[str]:
    """Format instructions where conversation roles must alternate system/user/assistant/user/assistant/..."""
    prompt: List[str] = []
    for instruction in instructions:
        if instruction["role"] == "system":
            prompt.extend(["<|im_start|>systemn", (instruction["content"]).strip(), " <|im_end|>n"])
        elif instruction["role"] == "user":
            prompt.extend(["<|im_start|>usern", (instruction["content"]).strip(), " <|im_end|>n"])
        else:
            raise ValueError(f"Invalid role: {instruction['role']}. Role must be either 'user' or 'system'.")
    prompt.extend(["<|im_start|>assistantn"])
    return "".join(prompt)

def print_instructions(prompt: str, response: str) -> None:
    bold, unbold = '33[1m', '33[0m'
    print(f"{bold}> Input{unbold}n{prompt}nn{bold}> Output{unbold}n{response['generated_text'].strip()}n")

Recuperación de conocimiento

Puede utilizar el siguiente mensaje para recuperar conocimientos:

instructions = [
{"role": "system", "content": "You are an expert in suggesting diet plans optimized for different sports or fitness activities, taking into account energy requirements, and recovery requirements."},
{"role": "user", "content": "I am trying to build muscle mass and increase my strength. What kind of high-protein, calorie-dense diet plan would you recommend for me?"}
]
prompt = format_instructions(instructions)
payload = {
"inputs": prompt,
"parameters": {"max_new_tokens": 700, "temperature": 0.5, "do_sample": True}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

El siguiente es el resultado:

> Input
<|im_start|>system
You are an expert in suggesting diet plans optimized for different sports or fitness activities, taking into account energy requirements, and recovery requirements. <|im_end|>
<|im_start|>user
I am trying to build muscle mass and increase my strength. What kind of high-protein, calorie-dense diet plan would you recommend for me? <|im_end|>
<|im_start|>assistant

> Output
Absolutely, I'd be happy to help you with that. Given your goal of building muscle mass and increasing strength, you'll want a diet that's high in protein and provides sufficient calories to support muscle growth and recovery. Here's a basic outline of what your diet plan could look like:

1. **Breakfast:**
   - 3 whole eggs
   - 3 egg whites
   - 1 cup of oatmeal
   - 1 scoop of whey protein
   - 1 banana

2. **Mid-Morning Snack:**
   - 1.5 ounces of almonds
   - 1 apple

3. **Lunch:**
   - 8 ounces of chicken breast
   - 1 cup of brown rice
   - 1 cup of mixed vegetables

4. **Afternoon Snack:**
   - 1.5 cups of Greek yogurt
   - 1 cup of mixed berries

5. **Dinner:**
   - 8 ounces of salmon or lean beef
   - 1 cup of quinoa
   - 1.5 cups of mixed vegetables

6. **Evening Snack:**
   - 1 scoop of casein protein
   - 1 tablespoon of almond butter

This is a high-protein, calorie-dense diet that includes a variety of nutrient-rich foods. It's important to note that everyone's nutritional needs are different, so you may need to adjust portion sizes or food choices based on your specific needs and preferences.

Also, remember to stay hydrated by drinking plenty of water throughout the day. Regular exercise, particularly strength training, is crucial to achieving your goals. It's also important to get enough sleep to aid in muscle recovery and growth.

Before starting any new diet or exercise program, it's a good idea to consult with a healthcare professional or a registered dietitian. They can provide personalized advice based on your health history and current lifestyle.

Codigo de GENERACION

Los modelos DBRX demuestran fortalezas comparadas para tareas de codificación. Por ejemplo, consulte el siguiente código:

instructions = [ 
{"role": "system", "content": "You are an expert in coding and programming. Your role is to provide examples, explanations, and insights related to programming languages, algorithms, data structures, and software development practices."}, 
{"role": "user", "content": "Write a Python script to read a CSV file containing stock prices and plot the closing prices over time using Matplotlib."} 
] 
prompt = format_instructions(instructions) 
payload = { "inputs": prompt, "parameters": {"max_new_tokens": 315, "temperature": 0.3, "do_sample": True} } 
response=predictor.predict(payload) 
print_instructions(prompt, response)

El siguiente es el resultado:

> Input
<|im_start|>system
You are an expert in coding and programming. Your role is to provide examples, explanations, and insights related to programming languages, algorithms, data structures, and software development practices. <|im_end|>
<|im_start|>user
Write a Python script to read a CSV file containing stock prices and plot the closing prices over time using Matplotlib. <|im_end|>
<|im_start|>assistant

> Output
Sure, I'd be happy to help you with that. Here's a simple Python script that uses the `pandas` library to read a CSV file and `matplotlib` to plot the closing prices over time.

```python
import pandas as pd
import matplotlib.pyplot as plt

# Load the data from a CSV file
df = pd.read_csv('stock_prices.csv')

# Plot the closing prices over time
plt.figure(figsize=(12,5))
plt.plot(df['Date'], df['Close'])
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Stock Prices Over Time')
plt.show()
```

In this script, replace `'stock_prices.csv'` with the path to your CSV file. The file should have columns named 'Date' and 'Close' for this script to work correctly. If your file uses different column names, you'll need to adjust the script accordingly.

The `pandas` library is a powerful tool for data manipulation and analysis. It can read data from a variety of sources, including CSV files, and represent the data in a tabular format. The `matplotlib` library is a popular choice for creating static, animated, and interactive visualizations in Python.

This script first loads the data from the CSV file into a pandas DataFrame. It then plots the 'Close' column against the 'Date' column using matplotlib's `plot()` function. The `figure()` function is used to specify the size of the plot, and `show()` is used to display the plot.

Matemáticas y razonamiento

Los modelos DBRX también reportan fortalezas en precisión matemática. Por ejemplo, consulte el siguiente código:

instructions = [
  {"role": "system", "content": "You are an expert in mathematics and reasoning. Your role is to provide examples, explanations, and insights related to mathematical concepts, problem-solving techniques, and logical reasoning."},
  {"role": "user", "content": "A car rental company charges $40 per day plus $0.25 per mile driven. If I rented a car for 3 days and drove 250 miles, what would be the total cost? Break down the calculation steps before giving the final answer."}
]
prompt = format_instructions(instructions)
payload = {
"inputs": prompt,
"parameters": {"max_new_tokens": 400, "temperature": 0.2, "do_sample": True}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

DBRX puede proporcionar comprensión como se muestra en el siguiente resultado con la lógica matemática:

> Input
<|im_start|>system
You are an expert in mathematics and reasoning. Your role is to provide examples, explanations, and insights related to mathematical concepts, problem-solving techniques, and logical reasoning. <|im_end|>
<|im_start|>user
A car rental company charges $40 per day plus $0.25 per mile driven. If I rented a car for 3 days and drove 250 miles, what would be the total cost? Break down the calculation steps before giving the final answer. <|im_end|>
<|im_start|>assistant

> Output
Sure, I'd be happy to help with that! The problem you've presented involves both fixed costs (the daily rate) and variable costs (the cost per mile). Let's break it down:

1. First, let's calculate the total cost of the fixed daily rate. The car rental company charges $40 per day, and you rented the car for 3 days. So, the total cost for the daily rate is $40/day * 3 days = $120.

2. Next, let's calculate the total cost of the variable rate, which is the cost per mile driven. The company charges $0.25 per mile, and you drove 250 miles. So, the total cost for the mileage is $0.25/mile * 250 miles = $62.50.

3. Finally, to find the total cost of renting the car, we add the total cost of the daily rate and the total cost of the mileage. So, the total cost is $120 + $62.50 = $182.50.

So, the total cost of renting the car for 3 days and driving 250 miles would be $182.50.

Limpiar

Una vez que haya terminado de ejecutar el cuaderno, asegúrese de eliminar todos los recursos que creó en el proceso para que se detenga su facturación. Utilice el siguiente código:

predictor.delete_model()
predictor.delete_endpoint()

Conclusión

En esta publicación, le mostramos cómo comenzar con DBRX en SageMaker Studio e implementar el modelo para inferencia. Dado que los modelos básicos están previamente entrenados, pueden ayudar a reducir los costos de capacitación e infraestructura y permitir la personalización para su caso de uso. Visite SageMaker JumpStart en SageMaker Studio ahora para comenzar.

Recursos


Acerca de los autores

Shikhar Kwatra es un arquitecto de soluciones especializado en IA/ML en Amazon Web Services y trabaja con un integrador de sistemas global líder. Obtuvo el título de uno de los maestros inventores indios más jóvenes con más de 400 patentes en los dominios de IA/ML e IoT. Tiene más de 8 años de experiencia en la industria, desde nuevas empresas hasta empresas de gran escala, desde ingeniero de investigación de IoT, científico de datos hasta arquitecto de datos e inteligencia artificial. Shikhar ayuda en la arquitectura, la construcción y el mantenimiento de entornos de nube escalables y rentables para organizaciones y apoya a los socios de GSI en la construcción de industrias estratégicas.

Niithiyn Vijeaswaran es arquitecto de soluciones en AWS. Su área de enfoque es la IA generativa y los aceleradores de IA de AWS. Tiene una Licenciatura en Informática y Bioinformática. Niithiyn trabaja en estrecha colaboración con el equipo de Generative AI GTM para ayudar a los clientes de AWS en múltiples frentes y acelerar su adopción de la IA generativa. Es un ávido fanático de los Dallas Mavericks y le gusta coleccionar zapatillas.

Sebastián Bustillo es arquitecto de soluciones en AWS. Se centra en las tecnologías de IA/ML con una profunda pasión por la IA generativa y los aceleradores informáticos. En AWS, ayuda a los clientes a desbloquear valor empresarial a través de la IA generativa. Cuando no está en el trabajo, le gusta preparar una taza perfecta de café especial y explorar el mundo con su esposa.

Armando diaz es arquitecto de soluciones en AWS. Se centra en IA generativa, IA/ML y análisis de datos. En AWS, Armando ayuda a los clientes a integrar capacidades de IA generativa de vanguardia en sus sistemas, fomentando la innovación y la ventaja competitiva. Cuando no está en el trabajo, le gusta pasar tiempo con su esposa y su familia, hacer senderismo y viajar por el mundo.

punto_img

Información más reciente

punto_img