Skip to content

'distutils' has no attribute '_msvccompiler' #650

Open
@FaFia

Description

@FaFia

Error: AttributeError: module 'distutils' has no attribute '_msvccompiler'

I am encountering an error when trying to resume training in StyleGAN3 in anaconda env. The error occurs during the execution of the training script, and the full traceback is as follows:


(stylegan3) C:\Users\aiilab_kuro\stylegan3>python train.py --cfg=stylegan3-r --gpus=1 --batch=32 --gamma=10 --data=datasets\256pxdetectedIMG9713.zip --outdir=results\256pxdetectedIMG9713_run --resume=results\my_256_6498imgtraining_run\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\network-snapshot-000400.pkl
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"

Training options:
{
  "G_kwargs": {
    "class_name": "training.networks_stylegan3.Generator",
    "z_dim": 512,
    "w_dim": 512,
    "mapping_kwargs": {
      "num_layers": 2
    },
    "channel_base": 65536,
    "channel_max": 1024,
    "magnitude_ema_beta": 0.9988915792636801,
    "conv_kernel": 1,
    "use_radial_filters": true
  },
  "D_kwargs": {
    "class_name": "training.networks_stylegan2.Discriminator",
    "block_kwargs": {
      "freeze_layers": 0
    },
    "mapping_kwargs": {},
    "epilogue_kwargs": {
      "mbstd_group_size": 4
    },
    "channel_base": 32768,
    "channel_max": 512
  },
  "G_opt_kwargs": {
    "class_name": "torch.optim.Adam",
    "betas": [
      0,
      0.99
    ],
    "eps": 1e-08,
    "lr": 0.0025
  },
  "D_opt_kwargs": {
    "class_name": "torch.optim.Adam",
    "betas": [
      0,
      0.99
    ],
    "eps": 1e-08,
    "lr": 0.002
  },
  "loss_kwargs": {
    "class_name": "training.loss.StyleGAN2Loss",
    "r1_gamma": 10.0,
    "blur_init_sigma": 0,
    "blur_fade_kimg": 200.0
  },
  "data_loader_kwargs": {
    "pin_memory": true,
    "prefetch_factor": 2,
    "num_workers": 3
  },
  "training_set_kwargs": {
    "class_name": "training.dataset.ImageFolderDataset",
    "path": "datasets\\256pxdetectedIMG9713.zip",
    "use_labels": false,
    "max_size": 9713,
    "xflip": false,
    "resolution": 256,
    "random_seed": 0
  },
  "num_gpus": 1,
  "batch_size": 32,
  "batch_gpu": 32,
  "metrics": [
    "fid50k_full"
  ],
  "total_kimg": 25000,
  "kimg_per_tick": 4,
  "image_snapshot_ticks": 50,
  "network_snapshot_ticks": 50,
  "random_seed": 0,
  "ema_kimg": 10.0,
  "augment_kwargs": {
    "class_name": "training.augment.AugmentPipe",
    "xflip": 1,
    "rotate90": 1,
    "xint": 1,
    "scale": 1,
    "rotate": 1,
    "aniso": 1,
    "xfrac": 1,
    "brightness": 1,
    "contrast": 1,
    "lumaflip": 1,
    "hue": 1,
    "saturation": 1
  },
  "ada_target": 0.6,
  "resume_pkl": "results\\my_256_6498imgtraining_run\\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\\network-snapshot-000400.pkl",
  "ada_kimg": 100,
  "ema_rampup": null,
  "run_dir": "results\\256pxdetectedIMG9713_run\\00004-stylegan3-r-256pxdetectedIMG9713-gpus1-batch32-gamma10"
}

Output directory:    results\256pxdetectedIMG9713_run\00004-stylegan3-r-256pxdetectedIMG9713-gpus1-batch32-gamma10
Number of GPUs:      1
Batch size:          32 images
Training duration:   25000 kimg
Dataset path:        datasets\256pxdetectedIMG9713.zip
Dataset size:        9713 images
Dataset resolution:  256
Dataset labels:      False
Dataset x-flips:     False

Creating output directory...
Launching processes...
Loading training set...
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\data\sampler.py:76: UserWarning: `data_source` argument is not used and will be removed in 2.2.0.You may still have custom implementation that utilizes it.
  warnings.warn(
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"

Num images:  9713
Image shape: [3, 256, 256]
Label shape: [0]

Constructing networks...
Resuming from "results\my_256_6498imgtraining_run\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\network-snapshot-000400.pkl"
Setting up PyTorch plugin "bias_act_plugin"... C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py:1964: UserWarning: TORCH_CUDA_ARCH_LIST is not set, all archs for visible cards are included for compilation.
If this is not desired, please set os.environ['TORCH_CUDA_ARCH_LIST'].
  warnings.warn(
Failed!
Traceback (most recent call last):
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 286, in <module>
    main() # pylint: disable=no-value-for-parameter
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 281, in main
    launch_training(c=c, desc=desc, outdir=opts.outdir, dry_run=opts.dry_run)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 96, in launch_training
    subprocess_fn(rank=0, c=c, temp_dir=temp_dir)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 47, in subprocess_fn
    training_loop.training_loop(rank=rank, **c)
  File "C:\Users\aiilab_kuro\stylegan3\training\training_loop.py", line 168, in training_loop
    img = misc.print_module_summary(G, [z, c])
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\misc.py", line 216, in print_module_summary
    outputs = module(*inputs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 511, in forward
    ws = self.mapping(z, c, truncation_psi=truncation_psi, truncation_cutoff=truncation_cutoff, update_emas=update_emas)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 151, in forward
    x = getattr(self, f'fc{idx}')(x)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 100, in forward
    x = bias_act.bias_act(x, b, act=self.activation)
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\ops\bias_act.py", line 84, in bias_act
    if impl == 'cuda' and x.device.type == 'cuda' and _init():
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\ops\bias_act.py", line 41, in _init
    _plugin = custom_ops.get_plugin(
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\custom_ops.py", line 136, in get_plugin
    torch.utils.cpp_extension.load(name=module_name, build_directory=cached_build_dir,
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1314, in load
    return _jit_compile(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1721, in _jit_compile
    _write_ninja_file_and_build_library(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1833, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 2081, in _run_ninja_build
    vc_env = distutils._msvccompiler._get_vc_env(plat_spec)
AttributeError: module 'distutils' has no attribute '_msvccompiler'

The error occurs during the loading of the bias_act module while resuming training. The specific issue appears to be related to the interaction between PyTorch's cpp_extension.py and the Microsoft Visual Studio setup.
Based on my understanding, the error suggests that the distutils module cannot locate or access the appropriate MSVC configuration.
I’ve attempted several troubleshooting steps but have not been able to resolve the issue.

I have tried set up my environment with the following configurations and paths:

PATH includes:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\lib\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
Conda Environment:

All dependencies installed via Conda or pip following the instructions in the StyleGAN3 README.

System Details
OS: Windows 11
GPU: NVIDIA GeForce RTX 4080 Super
NVIDIA Driver Version: (shows CUDA 12.7 in nvidia-smi)
CUDA Toolkit Version: 12.4 (as per nvcc --version) and 12. (as per nvidia-smi --version)
PyTorch Version: torch 2.5.1+cu124
Python Version: 3.9.21
run in anaconda

Thanks for any help, much appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions