<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Modes on AI Tools</title>
    <link>https://ait.bsc.es/llm-inference/modes/</link>
    <description>Recent content in Modes on AI Tools</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://ait.bsc.es/llm-inference/modes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Mode 1 — Manual endpoint</title>
      <link>https://ait.bsc.es/llm-inference/modes/manual-endpoint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/modes/manual-endpoint/</guid>
      <description>&lt;p&gt;This mode splits the work in two. First you start the endpoint — it stays alive in Slurm. Then&#xA;you send as many batches as you like. When you are done, you stop it.&lt;/p&gt;&#xA;&lt;p&gt;Use it when you have &lt;strong&gt;several batches&lt;/strong&gt; to run against the same model: the model is loaded&#xA;once and reused, instead of paying the load cost on every job.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The module loaded — see &lt;a href=&#34;https://ait.bsc.es/llm-inference/quickstart/&#34;&gt;Quickstart&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;A model ID with &lt;code&gt;SUPPORTED=yes&lt;/code&gt; in &lt;code&gt;llm-inference model list&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;An input file on a shared filesystem (&lt;code&gt;/gpfs&lt;/code&gt; or &lt;code&gt;$SCRATCH&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;step-1--start-the-endpoint&#34;&gt;Step 1 — Start the endpoint&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;endpoint start&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;llm-inference endpoint start &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;  --model mistralai/Mistral-7B-Instruct-v0.3 &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;  --gpus &lt;span class=&#34;m&#34;&gt;1&lt;/span&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 /scratch/&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;/run-001 &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;my_project &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;qos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;accelerated &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;acc &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;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;02:00:00 &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;&lt;span class=&#34;m&#34;&gt;80&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;The command prints JSON with the Slurm &lt;code&gt;job_id&lt;/code&gt;, the auto-assigned &lt;code&gt;port&lt;/code&gt; and the model. It&#xA;also writes these files into &lt;code&gt;--outdir&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mode 2 — One-shot inference</title>
      <link>https://ait.bsc.es/llm-inference/modes/one-shot-inference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/modes/one-shot-inference/</guid>
      <description>&lt;p&gt;This mode does everything inside a &lt;strong&gt;single Slurm job&lt;/strong&gt;: it starts vLLM, waits until it is&#xA;ready, sends every request from your input file, writes the output, and shuts vLLM down. You&#xA;run one command.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use-it&#34;&gt;When to use it&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You already have an input file ready.&lt;/li&gt;&#xA;&lt;li&gt;You want to process everything in one go and forget about it.&lt;/li&gt;&#xA;&lt;li&gt;You do not need the endpoint to stay alive afterwards.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;command&#34;&gt;Command&lt;/h2&gt;&#xA;&lt;figure class=&#34;code-example&#34;&gt;&lt;figcaption class=&#34;code-example__title&#34;&gt;bash 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;llm-inference bash inference &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;  --model mistralai/Mistral-7B-Instruct-v0.3 &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;  --in  /scratch/&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;/requests.json &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;  --out /scratch/&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;/results.jsonl &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 /scratch/&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;/run-bash &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;  --gpus &lt;span class=&#34;m&#34;&gt;1&lt;/span&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;my_project &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;qos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;accelerated &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;acc &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;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;01:00:00 &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;&lt;span class=&#34;m&#34;&gt;80&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;By default the command &lt;strong&gt;blocks&lt;/strong&gt; until the Slurm job ends. To get the shell back immediately&#xA;and check on the job later, add &lt;code&gt;--no-wait&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mode 3 — Shared HTTP API</title>
      <link>https://ait.bsc.es/llm-inference/modes/http-api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ait.bsc.es/llm-inference/modes/http-api/</guid>
      <description>&lt;p&gt;This mode starts a long-lived vLLM endpoint that other tools can talk to over HTTP: &lt;code&gt;curl&lt;/code&gt;, the&#xA;OpenAI SDK, or your own applications — as long as they run inside the MareNostrum 5 network.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-to-use-it&#34;&gt;When to use it&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You want to share the endpoint between several tools.&lt;/li&gt;&#xA;&lt;li&gt;The requests are interactive and you do not know them in advance.&lt;/li&gt;&#xA;&lt;li&gt;You want the URL to stay alive until you stop it.&lt;/li&gt;&#xA;&lt;/ul&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, TLS or proxy support&#xA;  &lt;/p&gt;</description>
    </item>
  </channel>
</rss>
