Skip to content

[Bug]: KeyError: 'Transaction' from GUI #777

Open
@Jacob0226

Description

@Jacob0226

Describe the bug

My Installation:

# Example docker image
docker.io/rocm/vllm-dev:20250114
# Install latest version. It seems to have GUI bug "KeyError: 'Transaction'" but cli is fine
mkdir -p /app; cd /app
git clone https://github.com/ROCm/rocprofiler-compute 
git clone https://github.com/ROCm/rocprofiler-sdk 
cd rocprofiler-compute
git checkout amd-staging; git pull   
rm -rf /usr/lib/python3/dist-packages/blinker* # blinker  was installed using distutils in the image which block the pip dependency
python3 -m pip install -r requirements.txt -r requirements-test.txt
# Make it global
export PATH=/app/rocprofiler-compute/src/:$PATH
rocprof-compute --version # Check rocprof-compute is ready

cd /app/rocprofiler-sdk/ 
rm -rf build install  
apt-get update; apt-get install -y libdw-dev           
cmake -B build -D CMAKE_INSTALL_PREFIX=install -D CMAKE_PREFIX_PATH=/opt/rocm -D CMAKE_HIP_COMPILER=/usr/bin/amdclang++ -D ROCPROFILER_BUILD_TESTS=OFF -D ROCPROFILER_BUILD_SAMPLES=OFF .
cmake --build build --target all --parallel 8
ls build/bin/rocprofv3
export ROCPROF=/app/rocprofiler-sdk/build/bin/rocprofv3 

Profile and analyze on linux machine

cd  /app/rocprofiler-compute/sample
hipcc -o vcopy vcopy.cpp
export HIP_VISIBLE_DEVICES=0
rocprof-compute profile -n vcopy_data   -- ./vcopy -n 1048576 -b 256
rocprof-compute analyze -p workloads/vcopy_data/MI300X_A1/ --gui

Open Chrome for GUI

ssh -L 8050:localhost:8050 jacchang@IP

Image

After I selected the kernel vecCopy, the orange rectangle still declared that I should choose the kernel or dispatch ID for showing further profiling info.
I checked the linux log and there was error which showed "Transaction" wasn't the key in the pandas storage.

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/dash/dash.py", line 1484, in dispatch
    response_data = ctx.run(partial_func)
                    ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/dash/_callback.py", line 698, in add_context
    raise err
  File "/usr/local/lib/python3.12/dist-packages/dash/_callback.py", line 689, in add_context
    output_value = _invoke_callback(func, *func_args, **func_kwargs)  # type: ignore[reportArgumentType]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/dash/_callback.py", line 58, in _invoke_callback
    return func(*args, **kwargs)  # %% callback invoked %%
           ^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocprofiler-compute/src/rocprof_compute_analyze/analysis_webui.py", line 226, in generate_from_filter
    content = determine_chart_type(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocprofiler-compute/src/utils/logger.py", line 48, in wrap_function
    result = function(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocprofiler-compute/src/rocprof_compute_analyze/analysis_webui.py", line 373, in determine_chart_type
    d_figs = build_bar_chart(display_df, table_config, barchart_elements, norm_filt)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocprofiler-compute/src/utils/gui.py", line 155, in build_bar_chart
    nested_bar = multi_bar_chart(table_config["id"], display_df)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocprofiler-compute/src/utils/gui.py", line 60, in multi_bar_chart
    nested_bar[row["Transaction"]][row["Type"]] = row["Avg"]
               ~~~^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/pandas/core/series.py", line 1121, in __getitem__
    return self._get_value(key)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/pandas/core/series.py", line 1237, in _get_value
    loc = self.index.get_loc(label)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/pandas/core/indexes/base.py", line 3812, in get_loc
    raise KeyError(key) from err
KeyError: 'Transaction'

CLI analyze, FYI
rocprof-compute analyze -p workloads/vcopy_data/MI300X_A1/ -b 2 3 4 5 -k 0
Image

Linux Distribution

Ubuntu 22.04.5 LTS (Jammy Jellyfish)

ROCm Compute Profiler Version

3.2.0

GPU

MI300X

ROCm Version

ROCm 6.3.0

Cluster name (if applicable)

No response

Reproducer

Please see the description of how I install the tool and do profiling.

Expected behavior

No response

Relevant log output

Screenshots

No response

Additional Context

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingtriage

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions