Skip to content

Using software-mentions with Apptainer (HPC) #41

@mgutierrezc

Description

@mgutierrezc

Hi! I'm trying to run software-mentions using its docker image and apptainer in an HPC. The grobid service runs without issues in port 8070, but software-mentions doesn't seem to load in port 8060. I think the real issue is me not knowing which command to use to get it up and running, so any feedback on how to do so would be really helpful!

This is my def file

# content of grobid.def
BootStrap: docker
From: grobid/software-mentions:0.8.1

%runscript
cd /opt/grobid && bash grobid-service/bin/grobid-service

Here is the slurm file I use to launch it

#!/bin/bash

#SBATCH -A sds_ag                  # Allocation name
#SBATCH --time=0-00:15:00                 # Time limit (D-HH:MM:SS)
#SBATCH --partition=gpu                # Partition name (change if needed)
#SBATCH -J grobid_sft_job                      # Job name
#SBATCH -o grobid_sft_job_%A.log            # Standard output file (%A: Job ID, %a: Array ID)
#SBATCH -e grobid_sft_job_%A.log            # Standard error file
#SBATCH -c 2
#SBATCH --mem=16gb
#SBATCH --gres=gpu:1
#SBATCH --array=1                    # Array range and max concurrent jobs (adjust 1-100 based on number of PDFs)

# Load necessary modules
module purge
module load apptainer

# Define variables
export CONTAINER_PATH="/home/sgw3fy/jobs/grobid_jobs/container_files/grobid_apt_software.sif"
export TMP_DIR="/home/sgw3fy/jobs/grobid_jobs/tmp"
export LOG_FILE="grobid_job_${SLURM_JOB_ID}.log"
export IN_PATH="/home/sgw3fy/jobs/grobid_jobs/input"
export OUT_PATH="/home/sgw3fy/jobs/grobid_jobs/output/test_sft_service_outputs"

apptainer run --nv --no-mount home,cwd --cleanenv --bind "${TMP_DIR}:/tmp" --writable-tmpfs "${CONTAINER_PATH}" -p 8070:8070 -p 8060:8060 &

# function to check if port is listening
check_port() {
    local port="$1"
    while ! nc -z localhost "$port"; do
        echo "Waiting for port $port to be available..."
        sleep 5
    done
    echo "Port $port is now listening."
}

# call the function to check the port
check_port 8070
check_port 8060

# test call to `grobid software mentions` service
curl --form input=@${IN_PATH}/alexnet.pdf --form disambiguate=1 localhost:8060/service/annotateSoftwarePDF > ${OUT_PATH}/output.json

And this is my log file

Waiting for port 8070 to be available...
WARN  [2025-03-07 14:53:43,700] org.hibernate.validator.internal.properties.javabean.JavaBeanExecutable: HV000254: Missing parameter metadata for ResponseMeteredLevel(String, int), which declares implicit or synthetic parameters. Automatic resolution of generic type information for method parameters may yield incorrect results if multiple parameters have the same erasure. To solve this, compile your code with the '-parameters' flag.
Waiting for port 8070 to be available...
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/affiliation-address/model.wapiti"
Model path: /opt/grobid/grobid-home/models/affiliation-address/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/name/header/model.wapiti"
Model path: /opt/grobid/grobid-home/models/name/header/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/name/citation/model.wapiti"
Model path: /opt/grobid/grobid-home/models/name/citation/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/header/model.wapiti"
Model path: /opt/grobid/grobid-home/models/header/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/date/model.wapiti"
Model path: /opt/grobid/grobid-home/models/date/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/citation/model.wapiti"
Model path: /opt/grobid/grobid-home/models/citation/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/fulltext/model.wapiti"
Model path: /opt/grobid/grobid-home/models/fulltext/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/segmentation/model.wapiti"
Waiting for port 8070 to be available...
Model path: /opt/grobid/grobid-home/models/segmentation/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/reference-segmenter/model.wapiti"
Model path: /opt/grobid/grobid-home/models/reference-segmenter/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/figure/model.wapiti"
Model path: /opt/grobid/grobid-home/models/figure/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/table/model.wapiti"
Model path: /opt/grobid/grobid-home/models/table/model.wapiti
[Wapiti] Loading model: "/opt/grobid/grobid-home/models/funding-acknowledgement/model.wapiti"
Model path: /opt/grobid/grobid-home/models/funding-acknowledgement/model.wapiti
Port 8070 is now listening.
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...
Waiting for port 8060 to be available...

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