---
title: MLCTrainingGraph
framework: ML Compute
role: symbol
role_heading: Class
platforms: [iOS 14.0+, iPadOS 14.0+, Mac Catalyst 14.0+, macOS 11.0+, tvOS 14.0+]
path: mlcompute/mlctraininggraph
---

# MLCTrainingGraph

A training graph that you create from one or more graph objects plus additional layers you add directly to the training graph.

## Declaration

```swift
class MLCTrainingGraph
```

## Overview

Overview The framework provides a family of graph-execution methods to execute a full training iteration, and methods to execute the forward pass, the gradient pass, and optimizer update, individually. Use one of the execute methods to execute a full training iteration to accelerate an ML model represented as a single training graph. Use one of the executeForward, executeGradient, or executeOptimizerUpdatemethods to accelerate an ML library that separates the forward pass, gradient pass, and optimizer update as separate phases.

## Topics

### Creating Training Graphs

- [init(graphObjects:lossLayer:optimizer:)](mlcompute/mlctraininggraph/init(graphobjects:losslayer:optimizer:).md)
- [Optimizers](mlcompute/optimizers.md)
- [MLCTensorParameter](mlcompute/mlctensorparameter.md)

### Preparing Training Graphs

- [addInputs(_:lossLabels:)](mlcompute/mlctraininggraph/addinputs(_:losslabels:).md)
- [addInputs(_:lossLabels:lossLabelWeights:)](mlcompute/mlctraininggraph/addinputs(_:losslabels:losslabelweights:).md)
- [addOutputs(_:)](mlcompute/mlctraininggraph/addoutputs(_:).md)
- [stopGradient(for:)](mlcompute/mlctraininggraph/stopgradient(for:).md)
- [compileOptimizer(_:)](mlcompute/mlctraininggraph/compileoptimizer(_:).md)
- [compile(options:device:)](mlcompute/mlctraininggraph/compile(options:device:).md)
- [compile(options:device:inputTensors:inputTensorsData:)](mlcompute/mlctraininggraph/compile(options:device:inputtensors:inputtensorsdata:).md)
- [link(with:)](mlcompute/mlctraininggraph/link(with:).md)
- [allocateUserGradient(for:)](mlcompute/mlctraininggraph/allocateusergradient(for:).md)
- [MLCGraphCompilationOptions](mlcompute/mlcgraphcompilationoptions.md)

### Executing Training Iterations

- [execute(inputsData:lossLabelsData:lossLabelWeightsData:batchSize:options:completionHandler:)](mlcompute/mlctraininggraph/execute(inputsdata:losslabelsdata:losslabelweightsdata:batchsize:options:completionhandler:).md)
- [execute(inputsData:lossLabelsData:lossLabelWeightsData:outputsData:batchSize:options:completionHandler:)](mlcompute/mlctraininggraph/execute(inputsdata:losslabelsdata:losslabelweightsdata:outputsdata:batchsize:options:completionhandler:).md)
- [synchronizeUpdates()](mlcompute/mlctraininggraph/synchronizeupdates().md)
- [setTrainingTensorParameters(_:)](mlcompute/mlctraininggraph/settrainingtensorparameters(_:).md)
- [MLCExecutionOptions](mlcompute/mlcexecutionoptions.md)
- [MLCGraphCompletionHandler](mlcompute/mlcgraphcompletionhandler.md)

### Executing Forward, Gradient, and Optimizer Updates

- [executeForward(batchSize:options:completionHandler:)](mlcompute/mlctraininggraph/executeforward(batchsize:options:completionhandler:).md)
- [executeForward(batchSize:options:outputsData:completionHandler:)](mlcompute/mlctraininggraph/executeforward(batchsize:options:outputsdata:completionhandler:).md)
- [executeForward(batchSize:options:outputsData:)](mlcompute/mlctraininggraph/executeforward(batchsize:options:outputsdata:).md)
- [executeGradient(batchSize:options:completionHandler:)](mlcompute/mlctraininggraph/executegradient(batchsize:options:completionhandler:).md)
- [executeGradient(batchSize:options:outputsData:completionHandler:)](mlcompute/mlctraininggraph/executegradient(batchsize:options:outputsdata:completionhandler:).md)
- [executeGradient(batchSize:options:outputsData:)](mlcompute/mlctraininggraph/executegradient(batchsize:options:outputsdata:).md)
- [executeOptimizerUpdate(options:completionHandler:)](mlcompute/mlctraininggraph/executeoptimizerupdate(options:completionhandler:).md)
- [executeOptimizerUpdate(options:)](mlcompute/mlctraininggraph/executeoptimizerupdate(options:).md)
- [synchronizeUpdates()](mlcompute/mlctraininggraph/synchronizeupdates().md)
- [setTrainingTensorParameters(_:)](mlcompute/mlctraininggraph/settrainingtensorparameters(_:).md)
- [MLCExecutionOptions](mlcompute/mlcexecutionoptions.md)
- [MLCGraphCompletionHandler](mlcompute/mlcgraphcompletionhandler.md)

### Inspecting Training Graphs

- [bindOptimizerData(_:deviceData:with:)](mlcompute/mlctraininggraph/bindoptimizerdata(_:devicedata:with:).md)
- [optimizer](mlcompute/mlctraininggraph/optimizer.md)
- [deviceMemorySize](mlcompute/mlctraininggraph/devicememorysize.md)
- [gradientTensor(forInput:)](mlcompute/mlctraininggraph/gradienttensor(forinput:).md)
- [sourceGradientTensors(for:)](mlcompute/mlctraininggraph/sourcegradienttensors(for:).md)
- [resultGradientTensors(for:)](mlcompute/mlctraininggraph/resultgradienttensors(for:).md)
- [gradientData(forParameter:layer:)](mlcompute/mlctraininggraph/gradientdata(forparameter:layer:).md)

## Relationships

### Inherits From

- [MLCGraph](mlcompute/mlcgraph.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Graphs

- [MLCGraph](mlcompute/mlcgraph.md)
- [MLCInferenceGraph](mlcompute/mlcinferencegraph.md)
