[diffusion] multi-platform: use current_platform.device_type to replace hard-coded cuda device (#15232)
Signed-off-by: Xiaodong Ye <yeahdongcn@gmail.com>
This commit is contained in:
@@ -430,8 +430,8 @@ class SamplingParams:
|
|||||||
"--generator-device",
|
"--generator-device",
|
||||||
type=str,
|
type=str,
|
||||||
default=SamplingParams.generator_device,
|
default=SamplingParams.generator_device,
|
||||||
choices=["cuda", "cpu"],
|
choices=["cuda", "musa", "cpu"],
|
||||||
help="Device for random generator (cuda or cpu). Default: cuda",
|
help="Device for random generator (cuda, musa or cpu). Default: cuda",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--num-frames",
|
"--num-frames",
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ class TextEncoderLoader(ComponentLoader):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
mesh = init_device_mesh(
|
mesh = init_device_mesh(
|
||||||
"cuda",
|
current_platform.device_type,
|
||||||
mesh_shape=(1, dist.get_world_size()),
|
mesh_shape=(1, dist.get_world_size()),
|
||||||
mesh_dim_names=("offload", "replicate"),
|
mesh_dim_names=("offload", "replicate"),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ def maybe_load_fsdp_model(
|
|||||||
hsdp_shard_dim = 1
|
hsdp_shard_dim = 1
|
||||||
|
|
||||||
device_mesh = init_device_mesh(
|
device_mesh = init_device_mesh(
|
||||||
"cuda",
|
current_platform.device_type,
|
||||||
# (Replicate(), Shard(dim=0))
|
# (Replicate(), Shard(dim=0))
|
||||||
mesh_shape=(hsdp_replicate_dim, hsdp_shard_dim),
|
mesh_shape=(hsdp_replicate_dim, hsdp_shard_dim),
|
||||||
mesh_dim_names=("replicate", "shard"),
|
mesh_dim_names=("replicate", "shard"),
|
||||||
|
|||||||
@@ -36,7 +36,10 @@ from sglang.multimodal_gen.runtime.layers.visual_embedding import (
|
|||||||
from sglang.multimodal_gen.runtime.managers.forward_context import get_forward_context
|
from sglang.multimodal_gen.runtime.managers.forward_context import get_forward_context
|
||||||
from sglang.multimodal_gen.runtime.models.dits.base import CachableDiT
|
from sglang.multimodal_gen.runtime.models.dits.base import CachableDiT
|
||||||
from sglang.multimodal_gen.runtime.models.utils import modulate
|
from sglang.multimodal_gen.runtime.models.utils import modulate
|
||||||
from sglang.multimodal_gen.runtime.platforms import AttentionBackendEnum
|
from sglang.multimodal_gen.runtime.platforms import (
|
||||||
|
AttentionBackendEnum,
|
||||||
|
current_platform,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class MMDoubleStreamBlock(nn.Module):
|
class MMDoubleStreamBlock(nn.Module):
|
||||||
@@ -677,7 +680,9 @@ class HunyuanVideoTransformer3DModel(CachableDiT):
|
|||||||
vec_ = torch.distributed.tensor.DTensor.from_local(
|
vec_ = torch.distributed.tensor.DTensor.from_local(
|
||||||
vec_,
|
vec_,
|
||||||
torch.distributed.DeviceMesh(
|
torch.distributed.DeviceMesh(
|
||||||
"cuda", list(range(get_sp_world_size())), mesh_dim_names=("dp",)
|
current_platform.device_type,
|
||||||
|
list(range(get_sp_world_size())),
|
||||||
|
mesh_dim_names=("dp",),
|
||||||
),
|
),
|
||||||
[torch.distributed.tensor.Replicate()],
|
[torch.distributed.tensor.Replicate()],
|
||||||
)
|
)
|
||||||
@@ -685,7 +690,9 @@ class HunyuanVideoTransformer3DModel(CachableDiT):
|
|||||||
inp = torch.distributed.tensor.DTensor.from_local(
|
inp = torch.distributed.tensor.DTensor.from_local(
|
||||||
inp,
|
inp,
|
||||||
torch.distributed.DeviceMesh(
|
torch.distributed.DeviceMesh(
|
||||||
"cuda", list(range(get_sp_world_size())), mesh_dim_names=("dp",)
|
current_platform.device_type,
|
||||||
|
list(range(get_sp_world_size())),
|
||||||
|
mesh_dim_names=("dp",),
|
||||||
),
|
),
|
||||||
[torch.distributed.tensor.Replicate()],
|
[torch.distributed.tensor.Replicate()],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,7 +11,10 @@ from sglang.multimodal_gen.runtime.layers.layernorm import RMSNorm
|
|||||||
from sglang.multimodal_gen.runtime.layers.linear import ReplicatedLinear
|
from sglang.multimodal_gen.runtime.layers.linear import ReplicatedLinear
|
||||||
from sglang.multimodal_gen.runtime.layers.rotary_embedding import _apply_rotary_emb
|
from sglang.multimodal_gen.runtime.layers.rotary_embedding import _apply_rotary_emb
|
||||||
from sglang.multimodal_gen.runtime.models.dits.base import CachableDiT
|
from sglang.multimodal_gen.runtime.models.dits.base import CachableDiT
|
||||||
from sglang.multimodal_gen.runtime.platforms import AttentionBackendEnum
|
from sglang.multimodal_gen.runtime.platforms import (
|
||||||
|
AttentionBackendEnum,
|
||||||
|
current_platform,
|
||||||
|
)
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
|
|
||||||
logger = init_logger(__name__)
|
logger = init_logger(__name__)
|
||||||
@@ -46,7 +49,7 @@ class TimestepEmbedder(nn.Module):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def timestep_embedding(t, dim, max_period=10000):
|
def timestep_embedding(t, dim, max_period=10000):
|
||||||
with torch.amp.autocast("cuda", enabled=False):
|
with torch.amp.autocast(current_platform.device_type, enabled=False):
|
||||||
half = dim // 2
|
half = dim // 2
|
||||||
freqs = torch.exp(
|
freqs = torch.exp(
|
||||||
-math.log(max_period)
|
-math.log(max_period)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ from einops import rearrange
|
|||||||
from transformers import PretrainedConfig, PreTrainedModel
|
from transformers import PretrainedConfig, PreTrainedModel
|
||||||
|
|
||||||
from sglang.multimodal_gen.runtime.models.dits.stepvideo import StepVideoRMSNorm
|
from sglang.multimodal_gen.runtime.models.dits.stepvideo import StepVideoRMSNorm
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
|
|
||||||
|
|
||||||
class EmptyInitOnDevice(torch.overrides.TorchFunctionMode):
|
class EmptyInitOnDevice(torch.overrides.TorchFunctionMode):
|
||||||
@@ -591,7 +592,9 @@ class STEP1TextEncoder(torch.nn.Module):
|
|||||||
def forward(self, prompts, with_mask=True, max_length=None):
|
def forward(self, prompts, with_mask=True, max_length=None):
|
||||||
self.device = next(self.text_encoder.parameters()).device
|
self.device = next(self.text_encoder.parameters()).device
|
||||||
|
|
||||||
with torch.no_grad(), torch.amp.autocast("cuda", dtype=torch.bfloat16):
|
with torch.no_grad(), torch.amp.autocast(
|
||||||
|
current_platform.device_type, dtype=torch.bfloat16
|
||||||
|
):
|
||||||
if type(prompts) is str:
|
if type(prompts) is str:
|
||||||
prompts = [prompts]
|
prompts = [prompts]
|
||||||
txt_tokens = self.text_tokenizer(
|
txt_tokens = self.text_tokenizer(
|
||||||
|
|||||||
@@ -89,7 +89,9 @@ class Req:
|
|||||||
num_outputs_per_prompt: int = 1
|
num_outputs_per_prompt: int = 1
|
||||||
seed: int | None = None
|
seed: int | None = None
|
||||||
seeds: list[int] | None = None
|
seeds: list[int] | None = None
|
||||||
generator_device: str = "cuda" # Device for random generator: "cuda" or "cpu"
|
generator_device: str = (
|
||||||
|
"cuda" # Device for random generator: "cuda", "musa" or "cpu"
|
||||||
|
)
|
||||||
|
|
||||||
# Tracking if embeddings are already processed
|
# Tracking if embeddings are already processed
|
||||||
is_prompt_processed: bool = False
|
is_prompt_processed: bool = False
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.schedule_batch import Req
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs, get_global_server_args
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs, get_global_server_args
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.runtime.utils.perf_logger import StageProfiler
|
from sglang.multimodal_gen.runtime.utils.perf_logger import StageProfiler
|
||||||
@@ -147,7 +148,9 @@ class PipelineStage(ABC):
|
|||||||
@property
|
@property
|
||||||
def device(self) -> torch.device:
|
def device(self) -> torch.device:
|
||||||
"""Get the device for this stage."""
|
"""Get the device for this stage."""
|
||||||
return torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
return torch.device(
|
||||||
|
current_platform.device_type,
|
||||||
|
)
|
||||||
|
|
||||||
def set_logging(self, enable: bool):
|
def set_logging(self, enable: bool):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
|
|
||||||
@@ -167,7 +168,9 @@ class CausalDMDDenoisingStage(DenoisingStage):
|
|||||||
image_latent[:, :, :1, :, :].to(target_dtype).permute(0, 2, 1, 3, 4)
|
image_latent[:, :, :1, :, :].to(target_dtype).permute(0, 2, 1, 3, 4)
|
||||||
)
|
)
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda", dtype=target_dtype, enabled=autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=target_dtype,
|
||||||
|
enabled=autocast_enabled,
|
||||||
):
|
):
|
||||||
_ = self.transformer(
|
_ = self.transformer(
|
||||||
image_first_btchw,
|
image_first_btchw,
|
||||||
@@ -195,7 +198,9 @@ class CausalDMDDenoisingStage(DenoisingStage):
|
|||||||
.permute(0, 2, 1, 3, 4)
|
.permute(0, 2, 1, 3, 4)
|
||||||
)
|
)
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda", dtype=target_dtype, enabled=autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=target_dtype,
|
||||||
|
enabled=autocast_enabled,
|
||||||
):
|
):
|
||||||
_ = self.transformer(
|
_ = self.transformer(
|
||||||
ref_btchw,
|
ref_btchw,
|
||||||
@@ -295,7 +300,7 @@ class CausalDMDDenoisingStage(DenoisingStage):
|
|||||||
|
|
||||||
with (
|
with (
|
||||||
torch.autocast(
|
torch.autocast(
|
||||||
device_type="cuda",
|
device_type=current_platform.device_type,
|
||||||
dtype=target_dtype,
|
dtype=target_dtype,
|
||||||
enabled=autocast_enabled,
|
enabled=autocast_enabled,
|
||||||
),
|
),
|
||||||
@@ -372,7 +377,9 @@ class CausalDMDDenoisingStage(DenoisingStage):
|
|||||||
context_bcthw = current_latents.to(target_dtype)
|
context_bcthw = current_latents.to(target_dtype)
|
||||||
with (
|
with (
|
||||||
torch.autocast(
|
torch.autocast(
|
||||||
device_type="cuda", dtype=target_dtype, enabled=autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=target_dtype,
|
||||||
|
enabled=autocast_enabled,
|
||||||
),
|
),
|
||||||
set_forward_context(
|
set_forward_context(
|
||||||
current_timestep=0,
|
current_timestep=0,
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.base import (
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs, get_global_server_args
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs, get_global_server_args
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
||||||
@@ -133,7 +134,9 @@ class DecodingStage(PipelineStage):
|
|||||||
|
|
||||||
# Decode latents
|
# Decode latents
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda", dtype=vae_dtype, enabled=vae_autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=vae_dtype,
|
||||||
|
enabled=vae_autocast_enabled,
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
# TODO: make it more specific
|
# TODO: make it more specific
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.platforms.interface import AttentionBackendEnum
|
from sglang.multimodal_gen.runtime.platforms.interface import AttentionBackendEnum
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
@@ -963,7 +964,7 @@ class DenoisingStage(PipelineStage):
|
|||||||
timesteps_cpu = timesteps.cpu()
|
timesteps_cpu = timesteps.cpu()
|
||||||
num_timesteps = timesteps_cpu.shape[0]
|
num_timesteps = timesteps_cpu.shape[0]
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type=("cuda" if torch.cuda.is_available() else "cpu"),
|
device_type=current_platform.device_type,
|
||||||
dtype=target_dtype,
|
dtype=target_dtype,
|
||||||
enabled=autocast_enabled,
|
enabled=autocast_enabled,
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from sglang.multimodal_gen.runtime.models.schedulers.scheduling_flow_match_euler
|
|||||||
from sglang.multimodal_gen.runtime.models.utils import pred_noise_to_pred_video
|
from sglang.multimodal_gen.runtime.models.utils import pred_noise_to_pred_video
|
||||||
from sglang.multimodal_gen.runtime.pipelines_core.schedule_batch import Req
|
from sglang.multimodal_gen.runtime.pipelines_core.schedule_batch import Req
|
||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages import DenoisingStage
|
from sglang.multimodal_gen.runtime.pipelines_core.stages import DenoisingStage
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.runtime.utils.perf_logger import StageProfiler
|
from sglang.multimodal_gen.runtime.utils.perf_logger import StageProfiler
|
||||||
@@ -127,7 +128,7 @@ class DmdDenoisingStage(DenoisingStage):
|
|||||||
|
|
||||||
# Predict noise residual
|
# Predict noise residual
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda",
|
device_type=current_platform.device_type,
|
||||||
dtype=target_dtype,
|
dtype=target_dtype,
|
||||||
enabled=autocast_enabled,
|
enabled=autocast_enabled,
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
||||||
@@ -83,7 +84,9 @@ class EncodingStage(PipelineStage):
|
|||||||
|
|
||||||
# Encode image to latents
|
# Encode image to latents
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda", dtype=vae_dtype, enabled=vae_autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=vae_dtype,
|
||||||
|
enabled=vae_autocast_enabled,
|
||||||
):
|
):
|
||||||
if server_args.pipeline_config.vae_tiling:
|
if server_args.pipeline_config.vae_tiling:
|
||||||
self.vae.enable_tiling()
|
self.vae.enable_tiling()
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
|||||||
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
from sglang.multimodal_gen.utils import PRECISION_TO_TYPE
|
||||||
@@ -253,7 +254,9 @@ class ImageVAEEncodingStage(PipelineStage):
|
|||||||
|
|
||||||
# Encode Image
|
# Encode Image
|
||||||
with torch.autocast(
|
with torch.autocast(
|
||||||
device_type="cuda", dtype=vae_dtype, enabled=vae_autocast_enabled
|
device_type=current_platform.device_type,
|
||||||
|
dtype=vae_dtype,
|
||||||
|
enabled=vae_autocast_enabled,
|
||||||
):
|
):
|
||||||
if server_args.pipeline_config.vae_tiling:
|
if server_args.pipeline_config.vae_tiling:
|
||||||
self.vae.enable_tiling()
|
self.vae.enable_tiling()
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ from sglang.multimodal_gen.runtime.pipelines_core.stages.validators import (
|
|||||||
StageValidators,
|
StageValidators,
|
||||||
VerificationResult,
|
VerificationResult,
|
||||||
)
|
)
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
from sglang.multimodal_gen.runtime.server_args import ServerArgs
|
||||||
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
|
||||||
from sglang.multimodal_gen.utils import best_output_size
|
from sglang.multimodal_gen.utils import best_output_size
|
||||||
@@ -61,7 +62,7 @@ class InputValidationStage(PipelineStage):
|
|||||||
if generator_device == "cpu":
|
if generator_device == "cpu":
|
||||||
device_str = "cpu"
|
device_str = "cpu"
|
||||||
else:
|
else:
|
||||||
device_str = "cuda" if torch.cuda.is_available() else "cpu"
|
device_str = current_platform.device_type
|
||||||
|
|
||||||
batch.generator = [
|
batch.generator = [
|
||||||
torch.Generator(device_str).manual_seed(seed) for seed in seeds
|
torch.Generator(device_str).manual_seed(seed) for seed in seeds
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import numpy as np
|
|||||||
import torch
|
import torch
|
||||||
import torch.distributed as dist
|
import torch.distributed as dist
|
||||||
|
|
||||||
|
from sglang.multimodal_gen.runtime.platforms import current_platform
|
||||||
|
|
||||||
|
|
||||||
def broadcast_pyobj(
|
def broadcast_pyobj(
|
||||||
data: List[Any],
|
data: List[Any],
|
||||||
@@ -20,7 +22,7 @@ def broadcast_pyobj(
|
|||||||
of dist_group argument).
|
of dist_group argument).
|
||||||
"""
|
"""
|
||||||
device = torch.device(
|
device = torch.device(
|
||||||
"cuda" if torch.cuda.is_available() and not force_cpu_device else "cpu"
|
current_platform.device_type if not force_cpu_device else "cpu"
|
||||||
)
|
)
|
||||||
|
|
||||||
if rank == src:
|
if rank == src:
|
||||||
|
|||||||
Reference in New Issue
Block a user