Introduction
EUMETSAT infrastructure contains H200 NVIDIA GPU cards. To employ the GPU, one need to provision one of the following flavors:
| Flavor name | GPU Partition Type | vCPU | RAM | vGPU Type | vGPU RAM |
|---|---|---|---|---|---|
| 6cpu-32gbmem-h200.1g.18gb | MIG | 6 | 32 GB | H200 | 18 GB |
| 11cpu-64gbmem-h200.2g.35gb | MIG | 11 | 64GB | H200 | 35 GB |
| 17cpu-128gbmem-h200.3g.71gb | MIG | 17 | 128 GB | H200 | 71 GB |
| 40cpu-256gbmem-h200.7g.141gb ( * ) | MIG | 40 | 256 GB | H200 | 141 GB |
| 40cpu-256gbmem-h200.pt1x ( * ) | non-MIG | 40 | 256 GB | H200 | 141 GB |
( * ) These plans are only available upon request for a limited amount of time for justified use case requirements.
Provision
To use the GPUs:
- Provision a new instance using the OpenStack Horizon UI
- Give the instance an appropriate name
- Select an image for the VM that supports GPUs TODO: These are not the real images, replace when ready
- Select one the flavors with GPUs. The options for these can be found above in the Introduction
- Once VM is deployed, you can verify GPUs for example using
nvidia-smiprogram from command line (see below for confirming library installations and drivers).
Usage
Essential commands
You can see GPU information using nvidia-smi
# Login to your instance and run below command $ nvidia-smi # Check if the input you received shows the NVIDIA-SMI, Driver and CUDA versions. You can also see the GPU hardware (e.g., H200X-1-18C) and the GPU memory Tue May 19 12:57:45 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.126.09 Driver Version: 580.126.09 CUDA Version: 13.0 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA H200X-1-18C On | 00000000:00:05.0 Off | On | | N/A N/A P0 N/A / N/A | 1MiB / 18432MiB | N/A Default | | | | Enabled | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | MIG devices: | +------------------+----------------------------------+-----------+-----------------------+ | GPU GI CI MIG | Shared Memory-Usage | Vol| Shared | | ID ID Dev | Shared BAR1-Usage | SM Unc| CE ENC DEC OFA JPG | | | | ECC| | |==================+==================================+===========+=======================| | 0 0 0 0 | 1MiB / 15928MiB | 16 0 | 1 0 1 0 1 | | | 0MiB / 8192MiB | | | +------------------+----------------------------------+-----------+-----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
As of the 19th of May 2026, GPU instances come with CUDA 13.0 and NVIDIA driver 580.126.09 . The instructions here have been tested with these versions, but there is no guarantee that they will all work with future versions.
# NVIDIA tools are available in /usr/local/cuda-<cuda_version>/bin/. You can add them to PATH following: $ export PATH=$PATH:/usr/local/cuda-<cuda_version>/bin/
Installing Libraries
You can install a variety of libraries using different methods. Below, we have a basic tutorial showing you how you can install libraries such as TensorFlow, Keras and PyTorch with conda package manger. Tensorflow library compatibility is available at: https://www.tensorflow.org/install/source#gpu.
Using conda
Since October 2024, pytorch has officially stopped supported installations through conda. If you intend to use pytorch in your project, we recommed you use the pip installation method below.
# install miniforge (or any conda manager) $ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh # make it executable $ chmod +x Miniforge3-Linux-x86_64.sh # run and install the executable $ ./Miniforge3-Linux-x86_64.sh
# create a conda environment called ML with a spcecific Python version, e.g. 3.12 $ conda create -n ML python=3.12 # activate the environment $ conda activate ML # install packages, note that installing tensorflow-gpu and keras also installs many number of extra libraries such as CUDA toolkit, cuDNN (CUDA Deep Neural Network library), Numpy, Scipy, Pillow (ML) $ conda install tensorflow-gpu keras
Using pip
# create a python environment $ python3 -m venv .venv # activate this environment $ source .venv/bin/activate # upgrade pip (.venv) $ python3 -m pip install --upgrade pip # install tensorflow packages, note that the GPU version of tensorflow requires the installation of the CUDA toolkit, as well as other libraries such as cuDNN (CUDA Deep Neural Network library). (.venv) $ python3 -m pip install 'tensorflow[and-cuda]' # install keras (.venv) $ python3 -m pip install keras # install pytorch (.venv) $ python3 -m pip install torch torchvision torchaudio
Using Docker
If you want to use GPUs in docker, you need to take few extra steps after creating the VM.
$ sudo apt install -y docker.io $ sudo usermod -aG docker $USER
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl --now enable docker
$ sudo usermod -aG docker $USER
To provide support for docker to use the GPU, you need to install the NVIDIA Container Toolkit. You can follow instructions on NVIDIA's website or basically do:
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit $ sudo systemctl restart docker
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo $ sudo yum clean expire-cache && sudo yum install -y nvidia-docker2 $ sudo systemctl restart docker
Test the install with:
$ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi Tue May 19 12:57:45 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.126.09 Driver Version: 580.126.09 CUDA Version: 13.0 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA H200X-1-18C On | 00000000:00:05.0 Off | On | | N/A N/A P0 N/A / N/A | 1MiB / 18432MiB | N/A Default | | | | Enabled | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | MIG devices: | +------------------+----------------------------------+-----------+-----------------------+ | GPU GI CI MIG | Shared Memory-Usage | Vol| Shared | | ID ID Dev | Shared BAR1-Usage | SM Unc| CE ENC DEC OFA JPG | | | | ECC| | |==================+==================================+===========+=======================| | 0 0 0 0 | 1MiB / 15928MiB | 16 0 | 1 0 1 0 1 | | | 0MiB / 8192MiB | | | +------------------+----------------------------------+-----------+-----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
And run something useful..
$ sudo docker run --gpus all --env NVIDIA_DISABLE_REQUIRE=1 -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter
Testing the installation
Regardless of the method of installation, to test whether the installation worked, and the GPU works as expected, here we run a few initial commands for different libraries & drivers for confirming the library integrations with the GPU.
As stated above, these tests were done with the versions of Python and CUDA present in instances created as of April 2026. The output might vary if older or newer versions are used.
$ python3 --version Python 3.13.13
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2025 NVIDIA Corporation Built on Wed_Aug_20_01:58:59_PM_PDT_2025 Cuda compilation tools, release 13.0, V13.0.88 Build cuda_13.0.r13.0/compiler.36424714_0
# Check with conda which versions are installed $ conda list | grep -E 'tensorflow|keras' keras 3.14.1 pyh753f3f9_0 conda-forge libtensorflow_cc 2.19.1 cuda128h5d964f1_255 conda-forge libtensorflow_framework 2.19.1 cuda128hc512d3a_255 conda-forge tensorflow 2.19.1 cuda128py312h8a47763_255 conda-forge tensorflow-base 2.19.1 cuda128py312ha24b813_255 conda-forge tensorflow-gpu 2.19.1 cuda128h780c90d_255 conda-forge
# Check with pip which versions are installed $ pip freeze | grep -E 'tensorflow|keras|torch' keras==3.14.1 tensorflow==2.21.0 torch==2.12.0 torchaudio==2.11.0 torchvision==0.27.0
# Now test if the libraries work by running some commands in python $ python
>>> import tensorflow as tf
>>> tf.test.is_built_with_cuda()
True
>>> tf.config.list_physical_devices('GPU')
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
>>> tf.__version__
'2.21.0'
>>> import torch >>> torch.__version__ '2.12.0+cu130' >>> torch.cuda.is_available() True >>> torch.version.cuda '13.0' # Create a tensor and move it to GPU >>> x = torch.tensor([1.0, 2.0]).cuda() tensor([1., 2.], device='cuda:0')



