View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Temas
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Transcripción
  • Código
  • Explora grandes modelos de lenguaje en el chip de Apple con MLX

    Descubre MLX LM, diseñado específicamente para que trabajar con grandes modelos de lenguaje sea simple y eficiente en el chip de Apple. Mencionaremos cómo ajustar y ejecutar inferencias en grandes modelos de lenguaje de última generación en tu Mac, y cómo integrarlos en apps y proyectos basados en Swift.

    Capítulos

    • 0:00 - Introducción
    • 3:07 - Introducción de MLX LM
    • 3:51 - Generación de texto
    • 8:42 - Cuantización
    • 11:39 - Ajuste
    • 17:02 - Grandes modelos de lenguaje en MLXSwift

    Recursos

    • MLX
    • MLX LM - Python API
    • MLX Examples
    • MLX Explore - Python API
    • MLX Framework
    • MLX Llama Inference
    • MLX Swift
    • MLX Swift Examples
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Comienza a usar MLX para el chip de Apple
  • Buscar este video…

    Hola, soy Angelos, ingeniero del equipo MLX. Hoy te mostraré por qué MLX es perfecto para grandes modelos de lenguaje en el chip de Apple. Con él, puedes realizar inferencias y ajustar modelos masivos desde tu Mac. Todo esto con apps CLI o desde Python o Swift. Si hace poco usas MLX, es una biblioteca de código abierto diseñada para el aprendizaje automático en el chip de Apple. Usa Metal para la aceleración en el GPU y aprovecha la memoria unificada para que las operaciones en el CPU y GPU funcionen con los mismos datos simultáneamente. Puedes usar MLX en tu lenguaje preferido, ya que proporciona API en Python, Swift, C++ e incluso C. Para más información, consulta nuestra sesión sobre MLX para el chip de Apple. Para ejecutar grandes modelos de lenguaje en el chip de Apple, MLX ofrece nuevas y potentes capacidades que te permiten ejecutar modelos de vanguardia en la Mac con un comando de una sola línea. Carguemos el último modelo de IA de DeepSeek, con sus impresionantes 670.000 millones de parámetros.

    Incluso al cuantificarlos a 4.5 bits por peso, los pesos del modelo por sí solos necesitan unos 380 GB de memoria. Para manejar eso, usamos un chip M3 Ultra con sus 512 GB de memoria unificada, ningún otro dispositivo de consumo se le acerca. El modelo está cargado, así que podemos empezar a interactuar con él. Podemos preguntarle: “¿Cuál es el lago más profundo de Estados Unidos?”,

    o pedirle que escriba código.

    MLX permite interacción y generación fluidas en tiempo real a velocidades superiores a las de lectura, incluso con modelos con cientos de miles de millones de parámetros ejecutándose en el escritorio de tu Mac. Ya ya viste lo que es posible, veamos ahora cómo puedes usar MLX para ejecutar estos potentes modelos en tu propia Mac. Presentaremos MLX LM, una biblioteca de Python y un conjunto de apps de línea de comandos que satisfacen todos los requisitos de tu gran modelo de lenguaje con una solución robusta y versátil para diversas apps.

    Luego, profundizaremos en la generación de texto con MLX LM y mostraremos lo fácil que es generar texto desde Python o desde la terminal. Además, analizaremos la descarga de modelos de Hugging Face y los cuantificaremos para una inferencia más rápida en el dispositivo.

    MLX puede hacer mucho más que una mera inferencia. Luego, usaremos MLX LM para ajustar un modelo con nuestros propios datos. Entrenaremos un adaptador de bajo rango, que podremos fusionar en el modelo para un uso más sencillo y una inferencia más rápida. Finalmente, analizaremos el uso de MLX de Swift para integrar un gran modelo de lenguaje en tu app de Swift con solo unas pocas líneas de código.

    La forma más sencilla de empezar a usar modelos de lenguaje en MLX es con MLX LM: un paquete de Python creado sobre MLX, diseñado para ejecutar y experimentar con grandes modelos de lenguaje. Proporciona un conjunto de herramientas de línea de comandos para generar texto o ajustar modelos sin escribir código. Para más control, también proporciona una API de Python para personalizar la generación o el proceso de entrenamiento tanto como quieras. También está integrado con Hugging Face. Así que puedes descargar rápidamente miles de modelos de internet e incluso cargar los tuyos para compartirlos con la comunidad.

    Empezar es fácil: basta con ejecutar pip install mlx-lm.

    Veamos los detalles del caso de uso más común de los modelos de lenguaje: generar de texto.

    Esta herramienta de línea de comandos genera texto con un modelo de lenguaje desde tu terminal, sin necesidad de código. Así funciona: le das un modelo de Hugging Face o una ruta local, una solicitud de texto y se encarga del resto. Descarga el modelo si es necesario, ejecuta el símbolo del sistema e imprime la respuesta generada. Así que, ejecutemos este comando.

    Obtenemos una implementación de Swift Quick Sort en segundos.

    Puedes modificar el comportamiento del modelo con indicadores como temperatura, TopP o tokens máximos, igual que con cualquier generador de texto estándar. Para conocer todas las opciones disponibles, puedes ejecutar mlx_lm.generate --help. Ya sea que estés creando prototipos, generando código o explorando el modelo, este es el punto de partida más sencillo. Ya vimos lo fácil que es generar texto desde la línea de comandos con mlx_lm.generate. Pero la potencia de MLX LM no se limita a las herramientas de terminal. También proporciona una API de Python clara y flexible, perfecta para un control más preciso o para la generación en un flujo de trabajo más amplio. Veamos cómo hacer lo mismo, generar texto, con solo unas pocas líneas de Python.

    Primero, importamos cargar y generar. Cargar, maneja todo lo relacionado con la carga del modelo. Obtiene el modelo solicitado desde el disco local o desde Hugging Face y configura el objeto del modelo junto con el identificador. Luego invocamos “generate”. La cual realiza un bucle de generación de tokens y devuelve el texto de salida para procesar en Python, registrar o alimentar en otros sistemas.

    Así, con solo cargar y generar, obtenemos la misma funcionalidad que la CLI, pero con control y flexibilidad totales en Python. Veamos otra de sus características importantes. El modelo que obtienes no es un objeto opaco con el que solo puedes interactuar a través de una interfaz fija. Es una red neuronal MLX estructurada que puedes inspeccionar, explorar su arquitectura e incluso modificarla. Te haré una demostración rápida.

    Podemos empezar con la lista de capas que componen el modelo.

    Esto nos da un desglose del transformador, capa por capa. También podemos ver los parámetros, básicamente las ponderaciones y los sesgos que el modelo aprendió.

    También podemos profundizar en una parte específica de la red, como el módulo de autoatención en la primera capa.

    Este nivel de transparencia es muy útil, no solo para la depuración o el aprendizaje, sino para el intercambio de capas, las rutinas de ajuste personalizado o la operación de modelos de bajo nivel.

    Ya vimos cómo generar texto a partir de una sola solicitud. Pero ¿qué pasa si quieres mantener una conversación o generar respuestas por turnos donde cada nuevo mensaje se basa en el anterior? Ahí entra en juego la caché de valores clave o KV. Los modelos de lenguaje usan mecanismos de atención para procesar por identificadores de entrada y calculan la atención sobre los identificadores previos. Esto puede ser costoso para solicitudes largas o con varios turnos. La caché de KV lo soluciona al almacenar los resultados intermedios previos, en concreto claves y valores.

    En lugar de volver a calcular todo, el modelo reutiliza esta caché y ahorra tiempo y cálculos. En MLX LM, usar una caché de KV es sencillo.

    Actualicemos el ejemplo anterior de Python con una caché KV creada para reutilizarse en varias generaciones.

    Primero creamos el objeto de caché con la función make_prompt_cache. Podemos usarlo para editar el historial, guardarlo para un uso posterior cambiar de conversación sin problemas.

    Luego, lo pasamos a la función generar. Al generarse nuevos identificadores, la caché se actualiza. Cada llamada continúa desde donde se interrumpió la última, manteniendo el contexto. Esto es muy útil al crear chatbots, asistentes virtuales o apps interactivas donde el seguimiento del historial sea importante.

    Ahora, hablemos de la cuantificación de los modelos. Vimos cómo generar texto y trabajar con modelos de forma interactiva. Al implementarlo en el mundo real, la eficiencia importa tanto como la funcionalidad. Los modelos se publican con la misma precisión con la que se entrenaron, como float32 o float16. Eso los hace grandes y lentos, especialmente en dispositivos más pequeños. Ahí entra en juego la cuantificación.

    Reduce la precisión del modelo a Int8 o incluso a 4 bits, lo cual usa menos memoria y acelera la inferencia con poco impacto en la calidad. Esto implica herramientas adicionales, scripts de conversión y problemas de compatibilidad. En MLX es más sencillo. La cuantificación está integrada. Puedes comprimir modelos en varios niveles y usarlos para inferencias o entrenamiento sin configuración adicional. Veamos cómo funciona.

    Para cuantificar o convertir un modelo con MLX, se usa el comando mlx_lm.convert. Esta herramienta descarga un modelo de Hugging Face, lo convierte a una precisión diferente y lo guarda localmente, todo en un paso. En este ejemplo, obtenemos el modelo Mistral original de 16 bits y lo cuantificamos a unos 4 bits por peso.

    El resultado es mucho más pequeño, más rápido de ejecutar y requiere menos memoria. Una vez convertido, el modelo se guarda y se puede usar inmediatamente para inferencias o entrenamiento con las mismas herramientas MLX LM.

    Y si quieres compartir tu modelo de cuantificación, puedes volver a cargarlo fácilmente en Hugging Face con un nombre de repositorio. Ya sea que estés optimizando la velocidad, ahorrando espacio o contribuyendo a la comunidad, solo necesitas este comando.

    Como en la generación de texto, usar la API de Python para convertir y cuantificar modelos ofrece más flexibilidad sin más complejidad. MLX LM facilita la aplicación de diferentes ajustes de cuantificación a diferentes partes del modelo o desde Python.

    Por ejemplo, es habitual mantener las capas de incrustación y proyección final con mayor precisión, ya que suelen ser más sensibles a la cuantificación. En este ejemplo, cuantificamos esas capas a 6 bits y el resto del modelo usa 4 bits, logrando un excelente equilibrio entre calidad y eficiencia. Esto se hace pasando una función de predicado de cuantificación que recibe cada capa y devuelve los parámetros que se deben usar para ella. Lo demás funciona exactamente igual. Invocamos “convert”, pasamos la ruta de Hugging Face y el directorio de salida, MLX se encarga del resto, incluida la descarga del modelo y el almacenamiento del resultado. Este control detallado es muy útil cuando experimentas con la compresión de modelos o intentas encontrar el mejor equilibrio entre rendimiento y precisión.

    Ya vimos cómo generar texto con grandes modelos y cómo cuantificarlos para una inferencia más rápida y una implementación más ligera. Pero MLX puede hacer más, sobre todo en entrenamiento. Puedes ajustar un gran modelo de lenguaje con tus propios datos en la Mac y, lo que es más importante, sin que esos datos salgan del dispositivo. Lo mejor es que puedes hacerlo sin escribir una sola línea de código. Veamos cómo funciona el ajuste fino.

    Los modelos suelen entrenarse en conjuntos de datos masivos de uso general procedentes de Internet. Eso les da un conocimiento amplio, pero pueden carecer de profundidad en dominios especializados o no captar detalles de una tarea concreta. Con el ajuste fino adaptamos los modelos a nuevos contextos. Al entrenarlos en un conjunto de datos más específico, les damos nuevas capacidades o adaptamos las respuestas a necesidades particulares. Este proceso suele realizarse en la nube, lo que puede ser costoso y no es ideal cuando se trabaja con datos privados o confidenciales. Con MLX, puedes ajustar de forma precisa estos modelos localmente en la Mac sin tener que usar los datos en la nube. Es eficiente, seguro y se integra perfecto en el flujo de trabajo de MLX.

    MLX LM admite dos tipos de ajuste fino desde el inicio: de modelo completo y entrenamiento de bajo rango. En el completo, actualizamos todos los parámetros del modelo entrenado. Esto te da máxima flexibilidad, pero también requiere más recursos. El entrenamiento de adaptadores de bajo rango, agrega una pequeña cantidad de nuevos parámetros al modelo y entrena solo esos, manteniendo la red original bloqueada. Esto da un entrenamiento más rápido, ligero y con una memoria más eficiente en hardware local. Apliquemos esto al ajustar el modelo de Mistral en un conjunto de datos personalizado. Veamos lo fácil que es iniciar un trabajo de ajuste con MLX LM. Solo se necesita un comando y algunos argumentos clave. Especificamos el modelo, la ruta al conjunto de datos y cuánto tiempo queremos entrenarlo. Como la cuantificación está integrada en MLX, el comando mlx_lm.lora puede entrenar adaptadores sobre modelos cuantificados. Esto reduce drásticamente el uso de memoria sin sacrificar la capacidad de realizar ajustes.

    Aquí, estamos entrenando en una versión cuantificada de 4 bits de Mistral, que reduce el uso de memoria unas 3.5 veces en comparación con la versión de precisión completa. Así, incluso con grandes modelos, el ajuste sigue siendo práctico y eficaz en la Mac. Ese comando de una sola línea es perfecto para un entrenamiento rápido cuando apenas comienzas. Si quieres ajustar el rendimiento, necesitarás más control sobre el proceso de entrenamiento. Ahí interviene el archivo de configuración de entrenamiento. MLX LM admite archivos de configuración que brindan control en el tamaño de la ruta, la velocidad de aprendizaje, los ajustes del optimizador, los intervalos de evaluación y más. Esto te permite adaptar la configuración a tus datos, hardware u objetivos de optimización y aprovechar al máximo tu adaptador. Veamos el ajuste en acción y cómo actualizar los conocimientos de un modelo. Preguntemos a Mistral 7b quién ganó el último Super Bowl.

    La respuesta es correcta, pero está desactualizada. El límite del modelo está en que no tiene acceso a eventos recientes. Pero con el ajuste fino que podemos solucionarlo en unos minutos. Al entrenar en un conjunto de datos con preguntas y respuestas sobre el último Super Bowl, podemos actualizarlo y hacer que responda con precisión.

    Después de unos minutos, el modelo puede dar respuestas actualizadas sobre equipos, jugadores, resultados y más.

    Ahora podemos usar MLX LM para fusionar los adaptadores entrenados en el modelo base. Esto es muy útil para la implementación y el uso compartido porque produce un único modelo independiente fácil de distribuir y usar.

    La fusión combina el adaptador con los pesos originales, lo que resulta en un modelo con la misma arquitectura y número de parámetros que la versión previa, pero con capacidades actualizadas. Así que se comporta como cualquier otro modelo, pero con ese conocimiento integrado.

    Para esta fusión, usamos el comando mlx_lm.fuse. Calcula los pesos fusionados y guarda los resultados en la ruta en un solo paso. No es necesario cuantificar nada manualmente. MLX lo hace automáticamente y conserva la misma cuantificación del entrenamiento. Y si quieres compartir tu modelo recién perfeccionado, es igual de sencillo. Solo proporciona un repositorio de Huggin Face y el modelo fusionado se cargará y estará listo para usar. Ya usamos Python para generar texto y ajustar grandes modelos de lenguaje. Pero otra funcionalidad de MLX es que ofrece la misma sencillez y flexibilidad a Swift. Veamos lo fácil que es usar un gran modelo de lenguaje en Swift con MLX.

    Este es un ejemplo de cómo cargar un modelo Mistral cuantificado y generar texto desde Swift. Y todo en tan solo 28 líneas de código. Importamos MLX y las bibliotecas de modelos de lenguaje. Creamos un contenedor de modelos que gestiona de forma segura el acceso al modelo y al identificador. Preparamos la entrada. Convertimos el texto de entrada al formato numérico que entiende el modelo. Por último, ejecutamos el bucle de generación e imprimimos el resultado, como en Python. Es el mismo flujo de trabajo y las mismas capacidades, pero en Swift. Veamos qué se necesita para conservar el historial de una conversación en varias interacciones con un modelo, como hicimos en Python. En Swift, esto requiere unas líneas más. La idea es la misma, necesitamos crear una caché de valores clave para reutilizarla en varias generaciones. Esto se hace con una línea adicional de código. Sin más complejidad. Para administrar la interacción de forma más precisa, usamos un iterador que establece el valor clave directamente y controla las generaciones paso a paso. Esto nos da la flexibilidad de administrar conversaciones de varios turnos y entradas avanzadas desde Swift. En esta sesión, vimos lo sencillo que es realizar inferencias, entrenamiento y cuantificaciones con MLX, ya sea mediante código o comandos de terminal. Las API del modelo de lenguaje de nivel superior que usamos y los kernels de Metal que las impulsan, son de código abierto. MLX proporciona operaciones básicas en C, C++, Python y Swift, con API de alto nivel en Python y Swift, lo que te da flexibilidad y control en toda la pila. Lo que lo hace especialmente potente para ejecutar modelos de lenguaje y flujos de aprendizaje automático en hardware de Apple. Ahora veamos qué sigue. Exploramos algunas funcionalidades clave de MLX LM, pero puedes hacer mucho más. Nuestra documentación profundiza en inferencia distribuida y entrenamiento, cuantificación aprendida y bucles de entrenamiento personalizados. Los repositorios MLX y MLX Swift ofrecen proyectos listos para ejecutar para tareas como generación de imágenes con modelos de difusión, reconocimiento de voz y entrenamiento de modelo completo. Ya sea que estés creando tu propia app con IA o explorando todas las posibilidades, lo que necesitas está a solo unos clics. Queremos ver las increíbles experiencias que crearás en el hardware de Apple con MLX y la potencia de los grandes modelos de lenguaje.

    • 1:12 - Running DeepSeek AI's model with MLX LM

      mlx_lm.chat --model mlx-community/DeepSeek-V3-0324-4bit
    • 3:51 - Text generation with MLX LM

      mlx_lm.generate --model "mlx-community/Mistral-7B-Instruct-v0.3-4bit" \
                      --prompt "Write a quick sort in Swift"
    • 4:35 - Changing the model's behavior with flags

      mlx_lm.generate --model "mlx-community/Mistral-7B-Instruct-v0.3-4bit" \
                      --prompt "Write a quick sort in Swift" \
                      --top-p 0.5 \
                      --temp 0.2 \
                      --max-tokens 1024
    • 4:48 - Getting help for MLX LM

      mlx_lm.generate --help
    • 5:26 - MLX LM Python API

      # Using MLX LM from Python
      
      from mlx_lm import load, generate
      
      # Load the model and tokenizer directly from HF
      model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")
      
      # Prepare the prompt for the model
      prompt = "Write a quick sort in Swift"
      messages = [{"role": "user", "content": prompt}]
      prompt = tokenizer.apply_chat_template(
          messages, add_generation_prompt=True
      )
      
      # Generate the text
      text = generate(model, tokenizer, prompt=prompt, verbose=True)
    • 6:24 - Inspecting model architecture

      from mlx_lm import load, generate
      
      model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")
      
      print(model)
      print(model.parameters())
      print(model.layers[0].self_attn)
    • 8:01 - Generation with KV cache

      from mlx_lm import load, generate
      from mlx_lm.models.cache import make_prompt_cache
      
      # Load the model and tokenizer directly from HF
      model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")
      
      # Prepare the prompt for the model
      prompt = "Write a quick sort in Swift"
      messages = [{"role": "user", "content": prompt}]
      prompt = tokenizer.apply_chat_template(
          messages, add_generation_prompt=True
      )
      
      cache = make_prompt_cache(model)
      
      # Generate the text
      text = generate(model, tokenizer, prompt=prompt, prompt_cache=cache, verbose=True)
    • 9:37 - Quantization

      mlx_lm.convert --hf-path "mistralai/Mistral-7B-Instruct-v0.3" \
                     --mlx-path "./mistral-7b-v0.3-4bit" \
                     --dtype float16 \
                     --quantize --q-bits 4 --q-group-size 64
    • 10:33 - Model quantization with MLX LM in Python

      from mlx_lm.convert import convert
      
      # We can choose a different quantization per layer
      def mixed_quantization(layer_path, layer, model_config):
          if "lm_head" in layer_path or "embed_tokens" in layer_path:
              return {"bits": 6, "group_size": 64}
          elif hasattr(layer, "to_quantized"):
              return {"bits": 4, "group_size": 64}
          else:
              return False
      
      # Convert can be used to change precision, quantize and upload models to HF
      convert(
          hf_path="mistralai/Mistral-7B-Instruct-v0.3",
          mlx_path="./mistral-7b-v0.3-mixed-4-6-bit",
          quantize=True,
          quant_predicate=mixed_quantization
      )
    • 13:37 - Model fine-tuning

      mlx_lm.lora --model "mlx-community/Mistral-7B-Instruct-v0.3-4bit" 
      						--train 
                  --data /path/to/our/data/folder
                  --iters 300 
                  --batch-size 16
    • 15:06 - Prompting before fine-tuning

      mlx_lm.generate --model "./mistral-7b-v0.3-4bit" \
          --prompt "Who won the latest super bowl?"
    • 15:34 - Fine-tuning to learn new knowledge

      mlx_lm.lora --model "./mistral-7b-v0.3-4bit" 
      						--train 
                  --data ./data 
                  --iters 300 
                  --batch-size 8 
                  --mask-prompt 
                  --learning-rate 1e-5
    • 15:48 - Prompting after fine-tuning

      mlx_lm.generate --model "mlx-community/Mistral-7B-Instruct-v0.3-4bit" \
                      --prompt "Who won the latest super bowl?" \
                      --adapter "adapters"
    • 16:29 - Fusing models

      mlx_lm.fuse --model "mlx-community/Mistral-7B-Instruct-v0.3-4bit"
                  --adapter-path "path/to/trained/adapters" \
                  --save-path "fused-mistral-7b-v0.3-4bit" \
                  --upload-repo "my-name/fused-mistral-7b-v0.3-4bit"
                  
      # Fusing our fine-tuned model adapters
      mlx_lm.fuse --model "./mistral-7b-v0.3-4bit" \
                  --adapter-path "adapters" \
                  --save-path "fused-mistral-7b-v0.3-4bit"
    • 17:14 - LLMs in MLX Swift

      import Foundation
      import MLX
      import MLXLMCommon
      import MLXLLM
      
      @main
      struct LLM {
          static func main() async throws {
              // Load the model and tokenizer directly from HF
              let modelId = "mlx-community/Mistral-7B-Instruct-v0.3-4bit"
              let modelFactory = LLMModelFactory.shared
              let configuration = ModelConfiguration(id: modelId)
              let model = try await modelFactory.loadContainer(configuration: configuration)
              
              try await model.perform({context in
                  // Prepare the prompt for the model
                  let prompt = "Write a quicksort in Swift"
                  let input = try await context.processor.prepare(input: UserInput(prompt: prompt))
                  
                  // Generate the text
                  let params = GenerateParameters(temperature: 0.0)
                  let tokenStream = try generate(input: input, parameters: params, context: context)
                  for await part in tokenStream {
                      print(part.chunk ?? "", terminator: "")
                  }
              })
          }
      }
    • 18:00 - Generation with KV cache in MLX Swift

      import Foundation
      import MLX
      import MLXLMCommon
      import MLXLLM
      
      @main
      struct LLM {
          static func main() async throws {
              // Load the model and tokenizer directly from HF
              let modelId = "mlx-community/Mistral-7B-Instruct-v0.3-4bit"
              let modelFactory = LLMModelFactory.shared
              let configuration = ModelConfiguration(id: modelId)
              let model = try await modelFactory.loadContainer(configuration: configuration)
              
              try await model.perform({context in
                  // Prepare the prompt for the model
                  let prompt = "Write a quicksort in Swift"
                  let input = try await context.processor.prepare(input: UserInput(prompt: prompt))
      
                  // Create the key-value cache
                  let generateParameters = GenerateParameters()
                  let cache = context.model.newCache(parameters: generateParameters)
      
                  // Low level token iterator
                  let tokenIter = try TokenIterator(input: input,
                                                    model: context.model,
                                                    cache: cache,
                                                    parameters: generateParameters)
                  let tokenStream = generate(input: input, context: context, iterator: tokenIter)
                  for await part in tokenStream {
                      print(part.chunk ?? "", terminator: "")
                  }
              })
          }
      }
    • 0:00 - Introducción
    • MLX es una biblioteca de código abierto optimizada para el Apple Chip que permite un aprendizaje automático eficiente en computadoras Mac. Usa Metal para la aceleración del GPU y memoria unificada para una colaboración fluida entre el CPU y el GPU. MLX admite Python, Swift, C++ y C. MLX LM, una biblioteca de Python y herramientas CLI, simplifica la ejecución, el ajuste y la integración de modelos de lenguaje de gran tamaño en el Apple Chip. Puedes cargar y generar texto e interactuar con él a partir de modelos modernos, como el modelo de parámetros 670B de DeepSeek AI, de forma local en tu Mac con una velocidad y un rendimiento impresionantes.

    • 3:07 - Introducción de MLX LM
    • MLX LM es un paquete de Python creado sobre MLX para ejecutar modelos de lenguaje de gran tamaño y experimentar con ellos. Ofrece herramientas de línea de comandos y una API de Python para la generación y el ajuste de texto, con integración en Hugging Face para descargar y compartir modelos. Se debe instalar con pip install mlx-lm.

    • 3:51 - Generación de texto
    • MLX LM es una herramienta que permite la generación de texto con modelos de lenguaje de Hugging Face o almacenados localmente. Ofrece dos interfaces principales: una herramienta de línea de comandos y una API de Python. La herramienta de línea de comandos permite generar texto con prompts simples y opciones de personalización básicas. La API de Python ofrece más control, lo que te permite cargar modelos, generar texto e inspeccionar y modificar la arquitectura del modelo. También admite conversaciones de varios turnos a través de una caché de clave-valor, que almacena de manera eficiente los resultados intermedios, ahorrando tiempo y cálculos. Esto hace que MLX LM sea adecuado para crear chatbots, asistentes virtuales y otras aplicaciones interactivas que requieren retención de contexto en varias prompts.

    • 8:42 - Cuantización
    • La cuantificación de modelos es una técnica que se usa para reducir la precisión de los modelos de aprendizaje automático, lo que los hace más pequeños y rápidos, especialmente para su implementación en dispositivos más pequeños. MLX simplifica este proceso con su API de cuantificación. Puedes usar el comando mlx_lm.convert para descargar, convertir y guardar modelos en un solo paso. Este permite un control exhaustivo, con el que puedes aplicar diferentes configuraciones de cuantificación a varias partes del modelo, logrando un equilibrio entre calidad y eficiencia. Los modelos cuantificados se pueden usar inmediatamente para inferencias o entrenamiento dentro de MLX o compartirse con otros a través de Hugging Face.

    • 11:39 - Ajuste
    • MLX LM permite ajustar modelos de lenguaje de gran tamaño de forma local en la Mac, sin escribir código ni enviar datos a la nube. Este proceso adapta modelos de propósito general a dominios o tareas específicos mediante conjuntos de datos más pequeños y específicos del dominio. MLX LM admite dos métodos de ajuste principales: de modelo completo y entrenamiento de adaptadores de bajo rango. El entrenamiento de adaptadores es más rápido, liviano y eficiente respecto al uso de memoria, lo que lo hace ideal para el hardware local. Puedes iniciar el ajuste con un solo comando, especificando el modelo, el conjunto de datos y la duración del entrenamiento. Para un mayor control, están disponibles los archivos de configuración de entrenamiento. Después del ajuste, los adaptadores se pueden fusionar nuevamente con el modelo base, creando un modelo autónomo y actualizado que se puede distribuir y usar fácilmente, e incluso cargar en los repositorios de Hugging Face para compartir.

    • 17:02 - Grandes modelos de lenguaje en MLXSwift
    • MLX aporta simplicidad y flexibilidad a Swift para usar modelos de lenguaje de gran tamaño. Permite cargar, tokenizar y generar texto con modelos cuantificados con solo unas pocas líneas de código. La administración de conversaciones de varios turnos requiere solo unas pocas líneas adicionales para crear una caché de clave-valor. MLX ofrece operaciones centrales de código abierto en C, C++, Python y Swift, con API de alto nivel en Python y Swift, lo que permite flujos de trabajo de aprendizaje automático eficientes en el hardware de Apple.

Developer Footer

  • Videos
  • WWDC25
  • Explora grandes modelos de lenguaje en el chip de Apple con MLX
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines