View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Videos

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

Más videos

  • Información
  • Resumen
  • Código
  • Combina el aprendizaje automático y los gráficos de Metal 4

    Aprende a combinar sin problemas el aprendizaje automático en tus apps gráficas con Metal 4. Presentaremos el recurso tensorial y el codificador de aprendizaje automático para ejecutar modelos en la línea de tiempo del GPU junto con su trabajo de renderizado y computacional. Descubre cómo el shader de aprendizaje automático te permite integrar redes neuronales directamente para obtener efectos avanzados y mejoras en el rendimiento. También mostraremos nuevas herramientas de depuración para cargas de trabajo de aprendizaje automático de Metal 4 en acción con una app de ejemplo.

    Capítulos

    • 0:00 - Introducción
    • 2:52 - Conoce los tensores
    • 6:21 - Codifica redes de aprendizaje automático
    • 12:51 - Incorpora el aprendizaje automático en tu shader
    • 20:26 - Depura tus cargas de trabajo de aprendizaje automático

    Recursos

    • Customizing a PyTorch operation
    • Metal Developer Resources
    • Metal Performance Shaders
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Descubrir Metal 4
    • Explorar juegos de Metal 4
    • Novedades del renderizado de Metal para apps inmersivas
    • Ve más allá con los juegos de Metal 4

    WWDC24

    • Accelerate machine learning with Metal
    • Train your machine learning and AI models on Apple GPUs
  • Buscar este video…
    • 8:13 - Exporting a Core ML package with PyTorch

      import coremltools as ct
      
      # define model in PyTorch
      # export model to an mlpackage
      
      model_from_export = ct.convert(
          custom_traced_model,
          inputs=[...],
          outputs=[...],
          convert_to='mlprogram',
          minimum_deployment_target=ct.target.macOS16,
      )
      
      model_from_export.save('model.mlpackage')
    • 9:10 - Identifying a network in a Metal package

      library = [device newLibraryWithURL:@"myNetwork.mtlpackage"];
      
      functionDescriptor = [MTL4LibraryFunctionDescriptor new]
      functionDescriptor.name = @"main";
      functionDescriptor.library = library;
    • 9:21 - Creating a pipeline state

      descriptor = [MTL4MachineLearningPipelineDescriptor new];
      descriptor.machineLearningFunctionDescriptor = functionDescriptor;
      
      [descriptor setInputDimensions:dimensions
                       atBufferIndex:1];
      
      pipeline = [compiler newMachineLearningPipelineStateWithDescriptor:descriptor
                                                                   error:&error];
    • 9:58 - Dispatching a network

      commands = [device newCommandBuffer];
      [commands beginCommandBufferWithAllocator:cmdAllocator];
      [commands useResidencySet:residencySet];
      
      /* Create intermediate heap */
      /* Configure argument table */
      
      encoder = [commands machineLearningCommandEncoder];
      [encoder setPipelineState:pipeline];
      [encoder setArgumentTable:argTable];
      [encoder dispatchNetworkWithIntermediatesHeap:heap];
    • 10:30 - Creating a heap for intermediate storage

      heapDescriptor = [MTLHeapDescriptor new];
      heapDescriptor.type = MTLHeapTypePlacement;
      heapDescriptor.size = pipeline.intermediatesHeapSize;
              
      heap = [device newHeapWithDescriptor:heapDescriptor];
    • 10:46 - Submitting commands to the GPU timeline

      commands = [device newCommandBuffer];
      [commands beginCommandBufferWithAllocator:cmdAllocator];
      [commands useResidencySet:residencySet];
      
      /* Create intermediate heap */
      /* Configure argument table */
      
      encoder = [commands machineLearningCommandEncoder];
      [encoder setPipelineState:pipeline];
      [encoder setArgumentTable:argTable];
      [encoder dispatchNetworkWithIntermediatesHeap:heap];
      
      [commands endCommandBuffer];
      [queue commit:&commands count:1];
    • 11:18 - Synchronization

      [encoder barrierAfterStages:MTLStageMachineLearning
                beforeQueueStages:MTLStageVertex
                visibilityOptions:MTL4VisibilityOptionDevice];
    • 15:17 - Declaring a fragment shader with tensor inputs

      // Metal Shading Language 4
      
      #include <metal_tensor>
      
      using namespace metal;
       
      [[fragment]]
      float4 shade_frag(tensor<device half, dextents<int, 2>> layer0Weights [[ buffer(0) ]],
                        tensor<device half, dextents<int, 2>> layer1Weights [[ buffer(1) ]],
                        /* other bindings */)
      {
          // Creating input tensor
          half inputs[INPUT_WIDTH] = { /* four latent texture samples + UV data */ };
      
          auto inputTensor = tensor(inputs, extents<int, INPUT_WIDTH, 1>());
          ...
      }
    • 17:12 - Operating on tensors in shaders

      // Metal Shading Language 4
      
      #include <MetalPerformancePrimitives/MetalPerformancePrimitives.h>
      
      using namespace mpp;
      
      constexpr tensor_ops::matmul2d_descriptor desc(
                    /* M, N, K */ 1, HIDDEN_WIDTH, INPUT_WIDTH,
             /* left transpose */ false,
            /* right transpose */ true,
          /* reduced precision */ true);
      
      tensor_ops::matmul2d<desc, execution_thread> op;
      op.run(inputTensor, layerN, intermediateN);
      
      for (auto intermediateIndex = 0; intermediateIndex < intermediateN(0); ++intermediateIndex)
      {
          intermediateN[intermediateIndex, 0] = max(0.0f, intermediateN[intermediateIndex, 0]);
      }
    • 18:38 - Render using network evaluation

      half3 baseColor          = half3(outputTensor[0,0], outputTensor[1,0], outputTensor[2,0]);
      half3 tangentSpaceNormal = half3(outputTensor[3,0], outputTensor[4,0], outputTensor[5,0]);
      
      half3 worldSpaceNormal = worldSpaceTBN * tangentSpaceNormal;
      
      return baseColor * saturate(dot(worldSpaceNormal, worldSpaceLightDir));
    • 0:00 - Introducción
    • Presentamos Metal 4, con mejoras en la integración del aprendizaje automático (ML) en juegos y gráficos. Metal 4 permite técnicas como aumento de escala, compresión de activos y combinación de animaciones con redes ML, y así mejora el rendimiento y la fidelidad visual. Las funcionalidades clave son “MTLTensors” para flujos de trabajo de ML, “MTL4MachineLearningCommandEncoder” para ejecutar redes en la línea de tiempo del GPU, Shader ML para integrar operaciones de ML en sombreadores y herramientas de depuración mejoradas. CoreML es óptimo para crear modelos de ML, y puedes lograr una integración perfecta de ML en las apps con Metal Debugger.

    • 2:52 - Conoce los tensores
    • Metal 4 presenta “MTLTensor”, un nuevo recurso diseñado específicamente para cargas de datos de aprendizaje automático. Los “MTLTensors” son contenedores de datos multidimensionales que permiten una representación eficiente de los diseños de datos complejos utilizados comúnmente en el aprendizaje automático, como los necesarios para las operaciones de convolución. Simplifican la indexación de datos multidimensionales en comparación con representaciones planas como “MTLBuffers”. Un “MTLTensor” se define por su rango (número de ejes), extensiones (número de puntos de datos a lo largo de cada eje), tipo de datos y propiedades de uso. Estas propiedades se especifican en un objeto “MTLTensorDescriptor”. Puedes crear “MTLTensors” desde un objeto “MTLDevice”, que ofrece un rendimiento optimizado con un diseño opaco, o desde un objeto “MTLBuffer” existente, donde debes especificar los pasos para tener en cuenta el posible relleno.

    • 6:21 - Codifica redes de aprendizaje automático
    • La versión más reciente de Metal también presenta “MTL4MachineLearningCommandEncoder”, y permite que el trabajo de aprendizaje automático se integre perfectamente en la línea de tiempo del GPU junto con los comandos de cálculo y renderizado. Con este nuevo codificador, los modelos ML completos se ejecutan en el GPU y se sincronizan con otros comandos de Metal con operaciones primitivas de sincronización estándar como barreras y cercas. El flujo de trabajo consta de dos partes principales: fuera de línea y ejecución. Cuando está fuera de línea, el sistema convierte un paquete CoreML en un “MTLPackage” optimizado con la herramienta de línea de comandos “metal-package-builder”. Durante la ejecución, el sistema compila “MTLPackage” en un “MTL4MachineLearningPipelineState” y crea el “MTL4MachineLearningCommandEncoder” ・€・ configurado con el estado del proceso, las entradas y las salidas ・€・ y luego envía comandos codificados al GPU. El codificador utiliza un “MTLHeap” para almacenar datos intermedios, y así optimiza el uso de recursos. Esto permite la ejecución paralela de tareas no dependientes, y mejora el rendimiento. Las capacidades de sincronización de Metal 4 garantizan que las salidas de ML que consumen trabajo esperen a que la red se complete, lo que lo hace adecuado para diversas apps en tiempo real, no solo para juegos.

    • 12:51 - Incorpora el aprendizaje automático en tu shader
    • Con Shader ML, presentado por Metal 4, los desarrolladores podrán integrar operaciones de aprendizaje automático directamente en los sombreadores. Esto mejora el rendimiento y reduce el uso de memoria ya que elimina la necesidad de sincronizar tensores entre la memoria del dispositivo y los sombreadores. Un ejemplo es la compresión de material neuronal, una técnica específica de ML. Comprime las texturas de los materiales hasta en un 50% en comparación con los formatos tradicionales de compresión en bloque. Con Shader ML, todo el proceso de evaluación de material neuronal ・€・ desde la inicialización de los tensores de entrada hasta la realización de la inferencia y el sombreado ・€・ se puede combinar en un único envío de sombreadores. Metal Performance Primitives está integrado en Shader ML y ofrece algunas API de alto rendimiento como multiplicación de matrices y convolución. Así podrá implementar rutinas de evaluación de redes neuronales de manera eficiente dentro de sombreadores de fragmentos, lo que da como resultado aplicaciones en tiempo real sin pérdida de calidad percibida, pero con un uso de memoria y espacio en disco significativamente reducidos.

    • 20:26 - Depura tus cargas de trabajo de aprendizaje automático
    • En el ejemplo se observa que al utilizar las nuevas herramientas de GPU en Xcode puedes depurar una carga de trabajo de aprendizaje automático que está causando artefactos graves en el cálculo de oclusión ambiental de una aplicación. Puedes capturar el seguimiento del GPU y usar el Visor de Dependencias para inspeccionar la sincronización de los buffers de comandos, y así descartar cualquier problema. Luego, examinas los tensores de entrada y salida de “MTL4MachineLearningCommandEncoder” y así confirmas que el problema está dentro de la propia red de aprendizaje automático. A continuación, puedes abrir la red en el nuevo ML Network Debugger, una herramienta visual que representa la estructura del modelo (escrito en PyTorch y convertido a CoreML y MTLPackage), lo que te permite identificar la operación específica responsable de introducir los artefactos. Al inspeccionar el gráfico, los artefactos están presentes tanto en la salida como en la entrada de una operación anterior, lo que indica un problema dentro de la red. Se identifica como el área problemática la función “SignedSmoothstep”. Al revisar el código Python, se descubre un error: un asterisco adicional hace que el sistema interprete una operación de multiplicación como una operación de potencia. Al corregir este error se resuelve el problema y la implementación de oclusión ambiental neuronal con “MTL4MachineLearningCommandEncoder” de Metal 4 se depura correctamente.

Developer Footer

  • Videos
  • WWDC25
  • Combina el aprendizaje automático y los gráficos de Metal 4
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & 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
    • Mini Apps Partner 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
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines