<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>LLM Inference module User Guide on AI Tools</title>
    <link>https://ait.bsc.es/llm-inference/</link>
    <description>Recent content in LLM Inference module User Guide on AI Tools</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://ait.bsc.es/llm-inference/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Overview</title>
      <link>https://ait.bsc.es/llm-inference/overview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/overview/</guid>
      <description>&lt;p&gt;&lt;code&gt;llm-inference&lt;/code&gt; is a command-line tool that runs large language models on the MareNostrum 5&#xA;HPC system. It sits between you and the two things that normally make this awkward — Slurm&#xA;and vLLM — and handles both.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-the-tool-does-for-you&#34;&gt;What the tool does for you&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reserves GPUs and nodes in Slurm&lt;/strong&gt; with the right parameters.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Starts the vLLM engine&lt;/strong&gt; inside a Singularity container.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Waits until the model is ready&lt;/strong&gt; — it polls &lt;code&gt;/health&lt;/code&gt; for you.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Returns your results&lt;/strong&gt;, or gives you an HTTP URL you can use with &lt;code&gt;curl&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The goal is simple: you say which model you want, how many GPUs you need, and how you want to&#xA;work. The tool does the rest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installation</title>
      <link>https://ait.bsc.es/llm-inference/installation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/installation/</guid>
      <description>&lt;p&gt;&lt;code&gt;llm-inference&lt;/code&gt; is already installed on MareNostrum 5. You do not build or install anything —&#xA;you load it as a module.&lt;/p&gt;&#xA;&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A &lt;strong&gt;MareNostrum 5 account&lt;/strong&gt; with access to the GPU partition (&lt;code&gt;acc&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;A valid &lt;strong&gt;Slurm billing account&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;load-the-module&#34;&gt;Load the module&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;Load llm-inference&lt;/figcaption&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load EB/apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module use /apps/ACC/LLM-INFERENCE/modulefiles&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load llm-inference/0.0.1-GCCcore-13.2.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;verify&#34;&gt;Verify&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference --help&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;If &lt;code&gt;llm-inference&lt;/code&gt; is not found, the &lt;code&gt;module use&lt;/code&gt; line did not take effect — check the path and&#xA;re-run the three commands in order.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quickstart</title>
      <link>https://ait.bsc.es/llm-inference/quickstart/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/quickstart/</guid>
      <description>&lt;p&gt;From zero to a first result. Everything here runs on a MareNostrum 5 login node.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-you-need&#34;&gt;What you need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A &lt;strong&gt;MareNostrum 5 account&lt;/strong&gt; with access to the GPU partition (&lt;code&gt;acc&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;A valid &lt;strong&gt;Slurm billing account&lt;/strong&gt; — this is the &lt;code&gt;account&lt;/code&gt; parameter below.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;step-1--load-the-module&#34;&gt;Step 1 — Load the module&lt;/h2&gt;&#xA;&lt;p&gt;The recommended way to use the tool on MareNostrum 5 is as a module:&lt;/p&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;Load the module&lt;/figcaption&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load EB/apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module use /apps/ACC/LLM-INFERENCE/modulefiles&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load llm-inference/0.0.1-GCCcore-13.2.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Check that it is available&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;div class=&#34;callout callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M9 18h6M10 22h4&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 2a6 6 0 0 0-3 11v3h6v-3a6 6 0 0 0-3-11z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    Avoid typing this every session&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Choosing a mode</title>
      <link>https://ait.bsc.es/llm-inference/choosing-a-mode/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/choosing-a-mode/</guid>
      <description>&lt;p&gt;The tool gives you three ways to work. This page helps you pick one in under a minute.&lt;/p&gt;&#xA;&lt;h2 id=&#34;decision-table&#34;&gt;Decision table&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;If you need to…&lt;/th&gt;&#xA;          &lt;th&gt;Use&lt;/th&gt;&#xA;          &lt;th&gt;Guide&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Process a single input file in one go and get a results file.&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;bash inference&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/one-shot-inference/&#34;&gt;One-shot inference&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Keep an endpoint alive and send several batches to it.&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;endpoint start&lt;/code&gt; + &lt;code&gt;batch run&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/manual-endpoint/&#34;&gt;Manual endpoint&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Talk to the model from &lt;code&gt;curl&lt;/code&gt;, the OpenAI SDK or your own code.&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;api start&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/http-api/&#34;&gt;Shared HTTP API&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Just experiment, or validate your parameters.&lt;/td&gt;&#xA;          &lt;td&gt;any mode with &lt;code&gt;--dry-run&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ait.bsc.es/llm-inference/concepts/&#34;&gt;Concepts&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;in-one-sentence-each&#34;&gt;In one sentence each&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mode 1 — Manual endpoint.&lt;/strong&gt; You decide when it starts and when it stops. Good for repeated&#xA;batches against the same loaded model.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mode 2 — One-shot inference.&lt;/strong&gt; One command, one input file, one output file. Best for&#xA;straightforward batch processing.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mode 3 — Shared HTTP API.&lt;/strong&gt; Exposes an OpenAI-style HTTP URL for &lt;code&gt;curl&lt;/code&gt; or any client.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-they-compare&#34;&gt;How they compare&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Manual endpoint&lt;/th&gt;&#xA;          &lt;th&gt;One-shot&lt;/th&gt;&#xA;          &lt;th&gt;HTTP API&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Commands to run&lt;/td&gt;&#xA;          &lt;td&gt;2+ (&lt;code&gt;start&lt;/code&gt;, &lt;code&gt;batch run&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;)&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;2+ (&lt;code&gt;start&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Model loaded&lt;/td&gt;&#xA;          &lt;td&gt;once, reused&lt;/td&gt;&#xA;          &lt;td&gt;once per job&lt;/td&gt;&#xA;          &lt;td&gt;once, reused&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Input&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;.json&lt;/code&gt; file per batch&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;.json&lt;/code&gt; file&lt;/td&gt;&#xA;          &lt;td&gt;live HTTP requests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Output&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;.jsonl&lt;/code&gt; file per batch&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;.jsonl&lt;/code&gt; file&lt;/td&gt;&#xA;          &lt;td&gt;HTTP responses&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Ends when&lt;/td&gt;&#xA;          &lt;td&gt;you run &lt;code&gt;endpoint stop&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;the batch finishes&lt;/td&gt;&#xA;          &lt;td&gt;you run &lt;code&gt;api stop&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;You must stop it&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;yes&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;no&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;yes&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;div class=&#34;callout callout--warning&#34; role=&#34;alert&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M12 3l9 16H3z&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 9v5M12 17h.01&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    Modes 1 and 3 hold GPUs until you stop them&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Concepts</title>
      <link>https://ait.bsc.es/llm-inference/concepts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/concepts/</guid>
      <description>&lt;p&gt;The vocabulary this guide uses. Where a term is a general inference concept rather than&#xA;something specific to this tool, it links to the &lt;a href=&#34;https://ait.bsc.es/handbook/&#34;&gt;handbook&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tool-concepts&#34;&gt;Tool concepts&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Term&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Model ID&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The identifier passed to &lt;code&gt;--model&lt;/code&gt;, e.g. &lt;code&gt;mistralai/Mistral-7B-Instruct-v0.3&lt;/code&gt;. Must appear in &lt;code&gt;llm-inference model list&lt;/code&gt; with &lt;code&gt;SUPPORTED=yes&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Outdir&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The directory given with &lt;code&gt;--outdir&lt;/code&gt;. The tool writes the generated Slurm script, logs and sidecar files here.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Sidecar file&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A small JSON written into the outdir recording &lt;code&gt;job_id&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt; and &lt;code&gt;model&lt;/code&gt;. It is how commands find a running endpoint.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A running vLLM server inside a Slurm job, reachable on an auto-assigned port.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Job ID&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The Slurm job identifier. Every &lt;code&gt;status&lt;/code&gt; and &lt;code&gt;stop&lt;/code&gt; command takes it via &lt;code&gt;--job&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Dry run&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;--dry-run&lt;/code&gt; validates parameters and writes the Slurm script &lt;strong&gt;without submitting&lt;/strong&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;required-slurm-parameters&#34;&gt;Required Slurm parameters&lt;/h2&gt;&#xA;&lt;p&gt;All three modes need the same set. Pass them by repeating &lt;code&gt;--slurm&lt;/code&gt; with &lt;code&gt;key=value&lt;/code&gt; pairs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Input and output format</title>
      <link>https://ait.bsc.es/llm-inference/input-output-format/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/input-output-format/</guid>
      <description>&lt;p&gt;Both &lt;code&gt;batch run&lt;/code&gt; and &lt;code&gt;bash inference&lt;/code&gt; use the same input and output format.&lt;/p&gt;&#xA;&lt;h2 id=&#34;input-file-json&#34;&gt;Input file (&lt;code&gt;.json&lt;/code&gt;)&lt;/h2&gt;&#xA;&lt;p&gt;A JSON object with an array of requests. Each request has its own &lt;code&gt;id&lt;/code&gt; plus the usual chat-API&#xA;fields:&lt;/p&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;requests.json&lt;/figcaption&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;requests&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;req-001&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mistralai/Mistral-7B-Instruct-v0.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;system&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;You are a concise assistant.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;   &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Explain tensor parallelism in one paragraph.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;max_tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;temperature&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;req-002&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mistralai/Mistral-7B-Instruct-v0.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Write a Python function that returns the n-th Fibonacci number.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;max_tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;temperature&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h3 id=&#34;fields&#34;&gt;Fields&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Field&lt;/th&gt;&#xA;          &lt;th&gt;Purpose&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Your identifier for the request. Copied to the output so you can match them up.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The model ID. Should match the model the endpoint was started with.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;messages&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The conversation, as &lt;code&gt;role&lt;/code&gt; / &lt;code&gt;content&lt;/code&gt; pairs. Roles: &lt;code&gt;system&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;assistant&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;max_tokens&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Upper bound on generated tokens for this request.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Sampling temperature. &lt;code&gt;0.0&lt;/code&gt; is the most deterministic.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;div class=&#34;callout callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M9 18h6M10 22h4&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 2a6 6 0 0 0-3 11v3h6v-3a6 6 0 0 0-3-11z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    Tip&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>API reference</title>
      <link>https://ait.bsc.es/llm-inference/api-reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/api-reference/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/http-api/&#34;&gt;HTTP API mode&lt;/a&gt;, vLLM serves an OpenAI-compatible HTTP&#xA;surface. This page documents the endpoints you will use.&lt;/p&gt;&#xA;&lt;p&gt;All paths are relative to the base URL printed by &lt;code&gt;api start&lt;/code&gt;, which looks like&#xA;&lt;code&gt;http://nid001:45123&lt;/code&gt;. Host and port are assigned at run time and change on every start.&lt;/p&gt;&#xA;&lt;div class=&#34;callout callout--warning&#34; role=&#34;alert&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M12 3l9 16H3z&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 9v5M12 17h.01&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    No authentication&#xA;  &lt;/p&gt;&#xA;  &lt;div class=&#34;callout__body&#34;&gt;&#xA;    &lt;p&gt;There is no API key, no TLS and no proxy support. The endpoint is reachable by anyone inside the&#xA;MN5 network who knows the host and port. Do not treat it as a shared service outside your own&#xA;work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Errors and exit codes</title>
      <link>https://ait.bsc.es/llm-inference/troubleshooting/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/troubleshooting/</guid>
      <description>&lt;p&gt;When something fails, the tool prints a &lt;strong&gt;structured JSON to stderr&lt;/strong&gt; with an &lt;code&gt;event&lt;/code&gt; field and a&#xA;hint about what to do next. This page lists the events you will see most often.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-read-a-failure&#34;&gt;How to read a failure&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;A failure on stderr&lt;/figcaption&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;model_rejected&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;hint&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Two things tell you what happened: the &lt;code&gt;event&lt;/code&gt; name (look it up below) and the process &lt;strong&gt;exit&#xA;code&lt;/strong&gt; (see the table at the end).&lt;/p&gt;&#xA;&lt;div class=&#34;callout callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M9 18h6M10 22h4&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 2a6 6 0 0 0-3 11v3h6v-3a6 6 0 0 0-3-11z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    First two questions&#xA;  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Logs and monitoring</title>
      <link>https://ait.bsc.es/llm-inference/observability/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/observability/</guid>
      <description>&lt;p&gt;There is no metrics stack here — this is a CLI submitting Slurm jobs. What you get instead is a&#xA;set of files in &lt;code&gt;--outdir&lt;/code&gt; and the Slurm job state.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-the-logs-are&#34;&gt;Where the logs are&lt;/h2&gt;&#xA;&lt;p&gt;Every mode writes into &lt;code&gt;--outdir&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;File&lt;/th&gt;&#xA;          &lt;th&gt;Contents&lt;/th&gt;&#xA;          &lt;th&gt;Look here when&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;out.txt&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Slurm standard output, including vLLM startup&lt;/td&gt;&#xA;          &lt;td&gt;The model seems slow to load&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;err.txt&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Slurm standard error&lt;/td&gt;&#xA;          &lt;td&gt;The job died&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;slurm-&amp;lt;jobid&amp;gt;.log&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;vLLM logs captured inside the job&lt;/td&gt;&#xA;          &lt;td&gt;You need engine-level detail&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;*.sh&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The generated Slurm script&lt;/td&gt;&#xA;          &lt;td&gt;You want to know what was actually submitted&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;*.json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Sidecar: &lt;code&gt;job_id&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, I/O paths&lt;/td&gt;&#xA;          &lt;td&gt;You need the port or job ID again&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;Follow a running job&lt;/figcaption&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f /scratch/&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;/run-001/out.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;checking-job-state&#34;&gt;Checking job state&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference endpoint status --job &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference api status --job &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Both report the Slurm state and the assigned nodes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick reference</title>
      <link>https://ait.bsc.es/llm-inference/quick-reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/quick-reference/</guid>
      <description>&lt;p&gt;A summary of the most common commands. Print this page if you want it next to you.&lt;/p&gt;&#xA;&lt;h2 id=&#34;check-the-tool&#34;&gt;Check the tool&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference --help&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference model list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;load-the-module&#34;&gt;Load the module&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load EB/apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module use /apps/ACC/LLM-INFERENCE/modulefiles&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;module load llm-inference/0.0.1-GCCcore-13.2.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;mode-1--manual-endpoint&#34;&gt;Mode 1 — Manual endpoint&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&#xA;  &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference endpoint start --model &amp;lt;ID&amp;gt; --gpus &amp;lt;N&amp;gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --outdir &amp;lt;DIR&amp;gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --slurm &lt;span class=&#34;nv&#34;&gt;account&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;ACC&amp;gt; --slurm &lt;span class=&#34;nv&#34;&gt;qos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;QOS&amp;gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --slurm &lt;span class=&#34;nv&#34;&gt;partition&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;PART&amp;gt; --slurm &lt;span class=&#34;nv&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;HH:MM:SS&amp;gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --slurm cpus-per-task&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;N&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Status / stop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference endpoint status --job &amp;lt;JOB_ID&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference endpoint stop   --job &amp;lt;JOB_ID&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Run a batch (repeatable while the endpoint is alive)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llm-inference batch run --in &amp;lt;IN.json&amp;gt; --out &amp;lt;OUT.jsonl&amp;gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --via-endpoint &amp;lt;JOB_ID&amp;gt; --outdir &amp;lt;DIR&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;See &lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/manual-endpoint/&#34;&gt;Manual endpoint&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security and shared-resource notes</title>
      <link>https://ait.bsc.es/llm-inference/security/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/security/</guid>
      <description>&lt;p&gt;This is a CLI on a shared HPC system, not a hosted service. The security considerations are&#xA;correspondingly different from a public API — and mostly about the HTTP API mode and about being&#xA;a good tenant of the cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-http-api-has-no-access-control&#34;&gt;The HTTP API has no access control&lt;/h2&gt;&#xA;&lt;div class=&#34;callout callout--warning&#34; role=&#34;alert&#34;&gt;&#xA;  &lt;p class=&#34;callout__title&#34;&gt;&#xA;    &lt;span class=&#34;callout__icon&#34; aria-hidden=&#34;true&#34;&gt;&lt;svg viewBox=&#34;0 0 24 24&#34; width=&#34;16&#34; height=&#34;16&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;&gt;&lt;path d=&#34;M12 3l9 16H3z&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M12 9v5M12 17h.01&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&#xA;    No API keys, no TLS, no proxy support&#xA;  &lt;/p&gt;&#xA;  &lt;div class=&#34;callout__body&#34;&gt;&#xA;    &lt;p&gt;&lt;a href=&#34;https://ait.bsc.es/llm-inference/modes/http-api/&#34;&gt;HTTP API mode&lt;/a&gt; exposes a plain HTTP port on a compute node. It&#xA;has &lt;strong&gt;no authentication&lt;/strong&gt;. Anyone inside the MareNostrum 5 network who knows the host and port&#xA;can send requests, and they will run on &lt;strong&gt;your&lt;/strong&gt; Slurm allocation, billed to &lt;strong&gt;your&lt;/strong&gt; account.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
