\(\bullet\)_Data parallelism._ Data parallelism is one of the most fundamental approaches to improving the training throughput. It replicates the model parameters and optimizer states across multiple GPUs and then distributes the whole training corpus into these GPUs. In this way, each GPU only needs to process the assigned data for it, and performs the forward and backward propagation to obtain the gradients. The computed gradients on different GPUs will be further aggregated to obtain the gradients of the entire batch for updating the models in all GPUs. In this way, as the calculations of gradients are independently performed on different GPUs, the data parallelism mechanism is highly scalable, enabling the way that increases the number of GPUs to improve training throughput. Furthermore, this technique is simple in implementation, and most of existing popular deep learning libraries have already implemented data parallelism, such as TensorFlow and PyTorch.
\(\bullet\)_Data parallelism._ Data parallelism은 훈련 처리량을 개선하기 위한 가장 기본적인 접근 방식 중 하나입니다. 모델 파라미터와 optimizer 상태를 여러 GPU에 복제한 다음 전체 훈련 코퍼스를 이러한 GPU에 분산시킵니다. 이렇게 하면 각 GPU는 할당된 데이터만 처리하면 되며, 순방향 및 역방향 전파를 수행하여 그라디언트를 얻을 수 있습니다. 서로 다른 GPU에서 계산된 그라디언트는 전체 배치의 그라디언트를 얻기 위해 더욱 집계되어 모든 GPU의 모델을 업데이트합니다. 이러한 방식으로 그라디언트 계산이 서로 다른 GPU에서 독립적으로 수행되므로 data parallelism 메커니즘은 확장성이 뛰어나며, GPU 수를 늘려 훈련 처리량을 개선할 수 있습니다. 또한 이 기법은 구현이 간단하며, 기존의 대부분의 인기 있는 딥러닝 라이브러리(예: TensorFlow, PyTorch)에서 이미 data parallelism을 구현하고 있습니다.
\(\bullet\)_데이터 병렬성._ 데이터 병렬성은 훈련 처리량을 개선하기 위한 가장 기본적인 접근 방식 중 하나입니다. 모델 파라미터와 최적화 상태를 여러 GPU에 복제한 다음 전체 훈련 코퍼스를 이러한 GPU에 분산시킵니다. 이렇게 하면 각 GPU는 할당된 데이터만 처리하면 되며, 순방향 및 역방향 전파를 수행하여 그라디언트를 얻을 수 있습니다. 서로 다른 GPU에서 계산된 그라디언트는 전체 배치의 그라디언트를 얻기 위해 더욱 집계되어 모든 GPU의 모델을 업데이트합니다. 이러한 방식으로 그라디언트 계산이 서로 다른 GPU에서 독립적으로 수행되므로 데이터 병렬 메커니즘은 확장성이 뛰어나며, GPU 수를 늘려 훈련 처리량을 개선할 수 있습니다. 또한 이 기법은 구현이 간단하며, 기존의 대부분의 인기 있는 딥러닝 라이브러리(예: TensorFlow, PyTorch)에서 이미 데이터 병렬 처리를 구현하고 있습니다.