diff --git a/ppcls/engine/evaluation/classification.py b/ppcls/engine/evaluation/classification.py
index 647a82171..45eccf71d 100644
--- a/ppcls/engine/evaluation/classification.py
+++ b/ppcls/engine/evaluation/classification.py
@@ -81,7 +81,8 @@ def classification_eval(engine, epoch_id=0):
         # gather Tensor when distributed
         if paddle.distributed.get_world_size() > 1:
             label_list = []
-            label = batch[1].cuda() if engine.config["Global"][
+            device_id = paddle.distributed.ParallelEnv().device_id
+            label = batch[1].cuda(device_id) if engine.config["Global"][
                 "device"] == "gpu" else batch[1]
             paddle.distributed.all_gather(label_list, label)
             labels = paddle.concat(label_list, 0)