a_h_0227
@a_h_0227

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PytorchとOpenCLでのバグ

解決したいこと

PytorchとOpneCLでのバグが発生した。対処法はあるのかどうか。
(初めての質問投稿なので、至らないところがあればご指摘ください)

環境:
Windows11
Python 3.10.9
AMD Ryzen 7 4700U

発生している問題・エラー

    return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
RuntimeError: 0 INTERNAL ASSERT FAILED at "..\\c10/core/TensorOptions.h":659, please report a bug to PyTorch. This is a grandfathered Caffe2 device type opencl, it shouldn't ever convert to a DispatchKey.  File a bug describing what you were doing if you think this is in error.

該当するソースコード

import pyopencl as cl

"""AlexNet"""
class AlexNet(object):
    """コンストラクタ"""
    def __init__(self, mode=False, model_path=''):
        # OpenCLの初期化
        platform = cl.get_platforms()[0]
        devices = platform.get_devices(device_type=cl.device_type.GPU)
        device = devices[0]  # 最初のデバイスを使用する場合

        context = cl.Context([device])
        queue = cl.CommandQueue(context)

        # OpenCLデバイスからPyTorchのデバイスオブジェクトに変換
        torch_device = torch.device("opencl:0")  # インデックスを0に指定

        # モデル定義
        self.__model = Model().to(torch_device)

自分で試したこと

        # デバイス設定 GPU or CPU
        self.__device="cuda" if torch.cuda.is_available() else "cpu"
        # モデル定義
        self.__model=Model().to(self.__device)

元々、インターネットにあったALexNetのソースを実行したかったが、搭載されているGPUがAMDのものの為、CPUとなってしまい、動かなかった。
そこで、chatGPTに質問したところOpenCLが使えると返ってきたため、言う通りに実装してみたが、動かなかった。

AMDのGPUでも多少快適に機械学習が回せれば方法は問わないので、どなたかご教授ください。<(-_-)>

0

1Answer

最初からインストールしてはどうでしょうか?

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

pytorchのトップページにて生成したものです。

pytorchはOpenCLを積極的に利用するの?

PyTorchはCUDAを積極的に利用するのでは?

1Like

Comments

  1. @a_h_0227

    Questioner

    再度インストールしてみましたが、ダメでした...
    私のGPUがAMDのものなので、CUDAが使えないのです。
    やはり機械学習にはNVIDIAのGPUじゃないと厳しいものなのですかね。

  2. カーネルのコンパイルが伴うようです。

  3. いい加減な回答されている方がいるので助け舟を(昔の知識ですが...

    AMDでPytorchを使うとなるとROCmを使う必要があります。
    現在PytorchもCUDAを使うものとROCmを使うものと分けられています。
    ただROCmが対応しているのがLinuxだけです。

    さらにもともとエンタープライズ向けのGPUのみしかサポートしていないので
    コンシューマー向けでは動作するかどうか怪しいです。
    軽く調べるとRX6000シリーズだと動くとか(動作環境がないので真偽は不明です。

    GoogleでROCm Pytorchで検索すると先人たちの書き残した資料があるので
    構築する際はそちらをご確認ください。

  4. 言葉足らずですみません。

    windowsのカーネルのコンパイル方法があるとは私は知りませんでした。忘れて下さい。

    Ubuntsuの用意
    当初Windows上のWSL2で試してましたが断念。

  5. @a_h_0227

    Questioner

    お二方、情報提供いただきありがとうございます。
    調べてみましたが、GPUとして動かした場合でも性能はあまり向上しないようです。今回はGoogle Colaboratoryなどを上手に活用することにします。
    改めて、ありがとうございました。

Your answer might help someone💌