<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kavya</title>
    <description>The latest articles on DEV Community by Kavya (@kavs).</description>
    <link>https://dev.to/kavs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4060840%2Fb046c557-6f43-4c6f-9db6-c1bbe64702fd.png</url>
      <title>DEV Community: Kavya</title>
      <link>https://dev.to/kavs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kavs"/>
    <language>en</language>
    <item>
      <title>Best GPU Cloud Providers for AI in 2026: Developer Comparison With Code</title>
      <dc:creator>Kavya</dc:creator>
      <pubDate>Tue, 25 Aug 2026 11:38:15 +0000</pubDate>
      <link>https://dev.to/kavs/best-gpu-cloud-providers-for-ai-in-2026-developer-comparison-with-code-4dk4</link>
      <guid>https://dev.to/kavs/best-gpu-cloud-providers-for-ai-in-2026-developer-comparison-with-code-4dk4</guid>
      <description>&lt;h1&gt;
  
  
  I Tested Every Major GPU Cloud So You Don't Have To
&lt;/h1&gt;

&lt;p&gt;Last quarter my team spent three weeks benchmarking GPU clouds for our LLM inference pipeline. We had a simple requirement: run Llama 3 70B in production, keep latency under 2 seconds, and don't spend a fortune doing it.&lt;/p&gt;

&lt;p&gt;What followed was a crash course in how differently each provider approaches the same problem.&lt;/p&gt;

&lt;p&gt;Here's everything we learned, with actual code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;If you're an ML engineer, backend developer, or startup CTO trying to figure out where to run your AI workloads in 2026, this is the guide I wish existed when we started. We cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real provisioning workflows, not just marketing claims&lt;/li&gt;
&lt;li&gt;Code snippets that actually run&lt;/li&gt;
&lt;li&gt;Cost estimates based on real usage&lt;/li&gt;
&lt;li&gt;Honest takes on where each provider wins and loses&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  TL;DR: Quick Provider Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Dev Experience&lt;/th&gt;
&lt;th&gt;GPU Availability&lt;/th&gt;
&lt;th&gt;B200?&lt;/th&gt;
&lt;th&gt;Best Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;td&gt;Moderate friction&lt;/td&gt;
&lt;td&gt;Good with reservation&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;Enterprise MLOps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;td&gt;Moderate friction&lt;/td&gt;
&lt;td&gt;Good with reservation&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;Azure OpenAI integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCP&lt;/td&gt;
&lt;td&gt;Moderate friction&lt;/td&gt;
&lt;td&gt;Good (TPU excellent)&lt;/td&gt;
&lt;td&gt;Announced&lt;/td&gt;
&lt;td&gt;JAX/TF training&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CoreWeave&lt;/td&gt;
&lt;td&gt;Good for large clusters&lt;/td&gt;
&lt;td&gt;Strong (reserved)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Lab-scale training&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda Labs&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Moderate (books out)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Research workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RunPod&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Budget experiments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;packet.ai&lt;/td&gt;
&lt;td&gt;Very good&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;AI-native GPU compute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What "AI Workload" Actually Means in Practice
&lt;/h2&gt;

&lt;p&gt;Before we get into providers, let's be specific. "AI workload" means different things to different teams:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-training / full training:&lt;/strong&gt; Hundreds to thousands of GPU-hours, multi-node clusters, InfiniBand networking, checkpoint storage. If you're doing this, you already know your requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning:&lt;/strong&gt; Single-node or small multi-GPU, 1-100 GPU-hours, high VRAM GPUs (A100 80GB, H100). Iteration speed matters more than raw cluster size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inference serving:&lt;/strong&gt; Low latency, high throughput, VRAM-efficient, OpenAI API compatibility, autoscaling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluation and benchmarking:&lt;/strong&gt; Short burst compute, flexibility over raw performance.&lt;/p&gt;

&lt;p&gt;Most developers are in the fine-tuning or inference bucket. That's where the real provider differences show up.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Developer Workflow: Deploying vLLM for LLM Inference
&lt;/h2&gt;

&lt;p&gt;Here's a concrete example. Deploying Llama 3 70B with &lt;a href="https://github.com/vllm-project/vllm" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; for inference is the same across every provider once you have SSH. The difference is how fast you get there and what it costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: SSH into your instance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh ubuntu@your-instance-ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Install vLLM
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Run inference in Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;vllm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SamplingParams&lt;/span&gt;

&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meta-llama/Meta-Llama-3-70B-Instruct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tensor_parallel_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bfloat16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_model_len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;sampling_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SamplingParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is the difference between A100 and B200?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;sampling_params&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Serve as OpenAI-compatible API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; vllm.entrypoints.openai.api_server &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--model&lt;/span&gt; meta-llama/Meta-Llama-3-70B-Instruct &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Hit the endpoint with OpenAI SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://your-instance-ip:8000/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;not-needed-for-local&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meta-llama/Meta-Llama-3-70B-Instruct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain GPU memory bandwidth in simple terms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This workflow runs identically on every provider that gives SSH access to an NVIDIA GPU. The differences come down to provisioning speed, GPU options, and hourly cost.&lt;/p&gt;




&lt;h2&gt;
  
  
  Provider Breakdown: The Developer Perspective
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/machine-learning/" rel="noopener noreferrer"&gt;Amazon Web Services&lt;/a&gt; gives you GPU instances through EC2. The key instance types for AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;p4d.24xlarge&lt;/code&gt; -- 8x A100 40GB, NVLink, roughly $32/hr on-demand&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;p4de.24xlarge&lt;/code&gt; -- 8x A100 80GB, NVLink, roughly $40/hr on-demand&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;p5.48xlarge&lt;/code&gt; -- 8x H100 80GB, NVLink + EFA, roughly $98/hr on-demand
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 run-instances &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--image-id&lt;/span&gt; ami-0abcdef1234567890 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--instance-type&lt;/span&gt; p4d.24xlarge &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--key-name&lt;/span&gt; your-key-pair &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--security-group-ids&lt;/span&gt; sg-your-group &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--subnet-id&lt;/span&gt; subnet-your-subnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://aws.amazon.com/sagemaker/" rel="noopener noreferrer"&gt;SageMaker&lt;/a&gt; wraps this with managed training, experiment tracking, model registry, and deployment pipelines. Genuinely useful if you need that. The friction: on-demand availability for large GPU instances is unreliable without a reservation. NVIDIA B200 is currently preview-only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; If you're already AWS-native, it works. For raw GPU access without managed services, the friction is higher than it needs to be.&lt;/p&gt;




&lt;h3&gt;
  
  
  Google Cloud Platform
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/ai" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; GPU instances run on A2 (A100) and A3 (H100) machine families. TPU access is unique to GCP.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances create gpu-instance &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;us-central1-a &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--machine-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;a2-highgpu-1g &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--accelerator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1,type&lt;span class="o"&gt;=&lt;/span&gt;nvidia-tesla-a100 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--image-family&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;tf-latest-gpu &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--image-project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;deeplearning-platform-release &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--boot-disk-size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100GB &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--metadata&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"install-nvidia-driver=True"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TPU access requires a completely separate workflow and JAX/TF framework commitment. If your stack is CUDA-based, TPUs require a meaningful porting effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; Strong for Vertex AI and JAX-native workloads. CUDA-based GPU access has the same friction as other hyperscalers.&lt;/p&gt;




&lt;h3&gt;
  
  
  CoreWeave
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://coreweave.com" rel="noopener noreferrer"&gt;CoreWeave&lt;/a&gt; is Kubernetes-native. Their workflow uses GPU workloads as Kubernetes pods, which is excellent if your ML team already uses Kubernetes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vllm-inference&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vllm&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vllm/vllm-openai:latest&lt;/span&gt;
    &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;limits&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;nvidia.com/gpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2"&lt;/span&gt;
        &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;160Gi"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-m"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vllm.entrypoints.openai.api_server"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--model"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meta-llama/Meta-Llama-3-70B-Instruct"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--tensor-parallel-size"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2"&lt;/span&gt;
  &lt;span class="na"&gt;restartPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Their H100 and H200 capacity is legitimate. InfiniBand networking for multi-node training is available. The catch: casual on-demand access is harder than with providers that offer instant provisioning. NVIDIA B200 is available through reservation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; Excellent for Kubernetes-native teams running large clusters. Less accessible for quick iteration or solo developers.&lt;/p&gt;




&lt;h3&gt;
  
  
  Lambda Labs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://lambdalabs.com" rel="noopener noreferrer"&gt;Lambda Labs&lt;/a&gt; has a clean API and competitive pricing. Their instance availability can be tight for popular GPU types.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cloud.lambdalabs.com/api/v1/instance-operations/launch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;region_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instance_type_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpu_1x_a100_sxm4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ssh_key_names&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-ssh-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quantity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Strong for research use cases. No inference-as-a-service layer. NVIDIA B200 not yet available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; Good for straightforward GPU access. Availability is the main friction point for popular instance types.&lt;/p&gt;




&lt;h3&gt;
  
  
  RunPod
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://runpod.io" rel="noopener noreferrer"&gt;RunPod&lt;/a&gt; is fast to spin up and cheap for experimentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;runpod

runpod config

runpod pod create &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--gpu-type&lt;/span&gt; &lt;span class="s2"&gt;"NVIDIA A100 80GB"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--image&lt;/span&gt; runpod/pytorch:latest &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--ports&lt;/span&gt; &lt;span class="s2"&gt;"8000/http"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--volume-size&lt;/span&gt; 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For serverless inference RunPod is particularly developer-friendly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;runpod&lt;/span&gt;

&lt;span class="n"&gt;runpod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;runpod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Endpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-endpoint-id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;run_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain transformers in two sentences&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;output&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; Best for quick experiments and budget inference. Third-party hardware tier has variable reliability. Not the right choice for production workloads where uptime matters.&lt;/p&gt;




&lt;h3&gt;
  
  
  packet.ai
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://packet.ai" rel="noopener noreferrer"&gt;packet.ai&lt;/a&gt; is the provider that surprised me the most during our benchmarking. The pitch is simple: dedicated NVIDIA GPUs, hourly billing, no reservation commitment, SSH-ready in minutes.&lt;/p&gt;

&lt;p&gt;After instance provisioning, access is immediate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh ubuntu@your-packet-instance-ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Environment setup is clean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; nvidia-cuda-toolkit

pip &lt;span class="nb"&gt;install &lt;/span&gt;torch torchvision torchaudio &lt;span class="nt"&gt;--index-url&lt;/span&gt; https://download.pytorch.org/whl/cu121

pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm

nvidia-smi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No driver drama. No 15-minute wait. The GPU is just there.&lt;/p&gt;

&lt;p&gt;For inference using &lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;Token Factory&lt;/a&gt;, packet.ai's OpenAI-compatible inference API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="c1"&gt;# Switching from OpenAI to packet.ai Token Factory
# is literally just changing base_url and api_key
&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.packet.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-packet-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llama-3-70b-instruct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a helpful assistant.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What makes NVIDIA B200 different from H100?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole migration from OpenAI to packet.ai for inference. Base URL change and a key swap.&lt;/p&gt;

&lt;p&gt;For fine-tuning on packet.ai's &lt;a href="https://packet.ai/gpus/a100" rel="noopener noreferrer"&gt;A100&lt;/a&gt; or &lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TrainingArguments&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Trainer&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;peft&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_peft_model&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;

&lt;span class="n"&gt;model_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meta-llama/Meta-Llama-3-8B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;peft_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LoraConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;task_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CAUSAL_LM&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;lora_alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;lora_dropout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;target_modules&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;v_proj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_peft_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;peft_config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;training_args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TrainingArguments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;output_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;num_train_epochs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;per_device_train_batch_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;gradient_accumulation_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;warmup_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;learning_rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;2e-4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bf16&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;logging_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;save_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On packet.ai's &lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt; (48GB VRAM), this handles models up to 13B parameters comfortably. On &lt;a href="https://packet.ai/gpus/a100" rel="noopener noreferrer"&gt;A100&lt;/a&gt; (80GB), 70B models with quantization are doable.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://packet.ai/gpus/b200" rel="noopener noreferrer"&gt;NVIDIA B200&lt;/a&gt; availability on packet.ai is worth calling out separately. Most providers have B200 on a waitlist or behind a reservation requirement. packet.ai has it on hourly billing with no commitment. If you want to benchmark Blackwell GPU performance for your specific model today, this is your most practical path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev experience verdict:&lt;/strong&gt; The fastest path from "I need a GPU" to "I have a running GPU." &lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;Token Factory&lt;/a&gt; removes the need to manage inference infrastructure entirely if you don't want to. &lt;a href="https://packet.ai/pricing" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt; is published and predictable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choosing the Right GPU for Your Task
&lt;/h2&gt;

&lt;h3&gt;
  
  
  VRAM Requirements by Task
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Model Size&lt;/th&gt;
&lt;th&gt;Min VRAM&lt;/th&gt;
&lt;th&gt;Recommended Instance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Inference only&lt;/td&gt;
&lt;td&gt;7B&lt;/td&gt;
&lt;td&gt;16GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://packet.ai/gpus/rtx-4090" rel="noopener noreferrer"&gt;RTX 4090&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inference only&lt;/td&gt;
&lt;td&gt;70B (4-bit)&lt;/td&gt;
&lt;td&gt;48GB&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt; or &lt;a href="https://packet.ai/gpus/l40s" rel="noopener noreferrer"&gt;L40S&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fine-tuning (LoRA)&lt;/td&gt;
&lt;td&gt;7B&lt;/td&gt;
&lt;td&gt;24GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fine-tuning (LoRA)&lt;/td&gt;
&lt;td&gt;70B&lt;/td&gt;
&lt;td&gt;80GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://packet.ai/gpus/a100" rel="noopener noreferrer"&gt;A100 80GB&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full fine-tuning&lt;/td&gt;
&lt;td&gt;7B&lt;/td&gt;
&lt;td&gt;80GB+&lt;/td&gt;
&lt;td&gt;&lt;a href="https://packet.ai/gpus/a100" rel="noopener noreferrer"&gt;A100 80GB&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Training&lt;/td&gt;
&lt;td&gt;70B+&lt;/td&gt;
&lt;td&gt;Multi-GPU&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://packet.ai/gpus/a100" rel="noopener noreferrer"&gt;A100&lt;/a&gt; or &lt;a href="https://packet.ai/gpus/b200" rel="noopener noreferrer"&gt;B200&lt;/a&gt; cluster&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Real Cost Estimate: Fine-tuning Llama 3 8B
&lt;/h3&gt;

&lt;p&gt;Training with LoRA for 3 epochs on a 100K sample dataset takes roughly 8-12 GPU-hours on an A100.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS SageMaker ml.p4d.24xlarge: roughly $4-5 for compute, plus SageMaker overhead and egress&lt;/li&gt;
&lt;li&gt;Lambda Labs A100: roughly $8-12 total&lt;/li&gt;
&lt;li&gt;packet.ai RTX 6000 Pro: lower than A100 alternatives, published on &lt;a href="https://packet.ai/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The RTX 6000 Pro is worth considering for fine-tuning runs that fit in 48GB VRAM. It's less expensive per hour than A100 while covering most LoRA fine-tuning tasks.&lt;/p&gt;




&lt;h2&gt;
  
  
  When to Self-Host Inference vs Use an API
&lt;/h2&gt;

&lt;p&gt;This is the question we spent the most time on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;Token Factory&lt;/a&gt; or similar API when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're in early stages and want zero infrastructure overhead&lt;/li&gt;
&lt;li&gt;Request volume is unpredictable&lt;/li&gt;
&lt;li&gt;You need OpenAI API compatibility without running servers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Self-host with &lt;a href="https://github.com/vllm-project/vllm" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; on packet.ai when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request volume is predictable and high enough that per-token pricing adds up&lt;/li&gt;
&lt;li&gt;You need custom model weights (fine-tuned models, private checkpoints)&lt;/li&gt;
&lt;li&gt;Latency requirements need dedicated GPU access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The crossover point varies by model and request volume. For most production applications above 1M tokens per day, self-hosting on packet.ai's &lt;a href="https://packet.ai/gpus/l40s" rel="noopener noreferrer"&gt;L40S&lt;/a&gt; or &lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt; with vLLM becomes more cost-efficient than API pricing.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: Can I use Hugging Face models directly on any of these providers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Hugging Face Hub access requires only &lt;code&gt;pip install transformers&lt;/code&gt; and a HF token. All providers that give SSH access work. For gated models like Llama 3 and Gemma, you need your token to have accepted the model license on the Hugging Face website first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What is the fastest way to get a GPU running for a quick experiment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://packet.ai" rel="noopener noreferrer"&gt;packet.ai&lt;/a&gt; and &lt;a href="https://runpod.io" rel="noopener noreferrer"&gt;RunPod&lt;/a&gt; both provision instances quickly. packet.ai's dedicated instances are SSH-ready immediately after creation. For even faster experimentation without provisioning anything, packet.ai's &lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;Token Factory&lt;/a&gt; gives you inference via API with no GPU management required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Is there a free tier for GPU cloud?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google Colab has free T4 GPU access with session limits. For real workloads, there's no meaningful free tier. Most providers have low minimum billing thresholds. packet.ai bills hourly, so you can run a quick experiment and pay only for the time actually used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Does NVIDIA B200 matter for inference workloads?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;a href="https://www.nvidia.com/en-us/data-center/b200/" rel="noopener noreferrer"&gt;B200&lt;/a&gt; delivers significantly higher memory bandwidth than H100, which directly impacts inference throughput for large models. For serving 70B+ parameter models at production scale, B200 reduces the GPU count needed for a given throughput target. &lt;a href="https://packet.ai/gpus/b200" rel="noopener noreferrer"&gt;packet.ai&lt;/a&gt; offers B200 on hourly billing without a reservation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Can I run multi-GPU inference with vLLM on packet.ai?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;a href="https://github.com/vllm-project/vllm" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt;'s &lt;code&gt;tensor_parallel_size&lt;/code&gt; parameter distributes the model across GPUs. The example in this article shows a 2-GPU setup. The same approach scales to the GPU count of your instance on packet.ai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How do I reduce inference costs without switching providers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quantization is the biggest lever. Running a 70B model in 4-bit (GPTQ or AWQ) cuts VRAM requirements roughly in half, which means you can use a smaller GPU instance. &lt;a href="https://github.com/vllm-project/vllm" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; supports both formats natively. On packet.ai, moving from an A100 to an &lt;a href="https://packet.ai/gpus/rtx-6000-pro" rel="noopener noreferrer"&gt;RTX 6000 Pro&lt;/a&gt; for a quantized 70B model can significantly reduce hourly cost with minimal quality impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What's the difference between packet.ai dedicated and dynamic instances?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dedicated instances give you exclusive physical access to the GPU. Your VRAM, your compute, no other tenants. Dynamic instances share underlying hardware at lower cost. For production inference or training where consistent throughput matters, dedicated is the right choice. For experimentation or burst workloads, dynamic saves money. Both are available on hourly billing at &lt;a href="https://packet.ai/pricing" rel="noopener noreferrer"&gt;packet.ai&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;If you're starting a new AI project in 2026 and don't have existing cloud commitments, the stack I'd reach for is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://packet.ai" rel="noopener noreferrer"&gt;packet.ai&lt;/a&gt; for GPU compute (training and fine-tuning)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;packet.ai Token Factory&lt;/a&gt; for managed inference&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vllm-project/vllm" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; for self-hosted inference when volume justifies it&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/machine-learning/" rel="noopener noreferrer"&gt;AWS&lt;/a&gt; or &lt;a href="https://azure.microsoft.com/en-us/solutions/ai/" rel="noopener noreferrer"&gt;Azure&lt;/a&gt; only if you need specific managed services that don't exist elsewhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hyperscalers are still the right answer for some teams. But for developers who just need reliable GPUs with predictable pricing and fast provisioning, the specialist providers have pulled far enough ahead that defaulting to AWS purely out of habit no longer makes sense.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://packet.ai/pricing" rel="noopener noreferrer"&gt;packet.ai's pricing page&lt;/a&gt; is public. Run the numbers on your workload before committing to anything.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>gpu</category>
      <category>cloud</category>
    </item>
    <item>
      <title>LLM Inference APIs in 2026: How to Choose Between OpenAI, Open Models, and Self-Hosted GPUs</title>
      <dc:creator>Kavya</dc:creator>
      <pubDate>Thu, 13 Aug 2026 15:06:27 +0000</pubDate>
      <link>https://dev.to/kavs/llm-inference-apis-in-2026-how-to-choose-between-openai-open-models-and-self-hosted-gpus-1ihm</link>
      <guid>https://dev.to/kavs/llm-inference-apis-in-2026-how-to-choose-between-openai-open-models-and-self-hosted-gpus-1ihm</guid>
      <description>&lt;p&gt;If you are building an AI application, choosing the model is only part of the problem.&lt;/p&gt;

&lt;p&gt;Sooner or later, you also have to decide how you are going to run that model.&lt;/p&gt;

&lt;p&gt;You can call a proprietary model through an API such as OpenAI. You can deploy an open model yourself on a GPU using tools such as vLLM. Or you can use a managed inference API that hosts open models for you.&lt;/p&gt;

&lt;p&gt;All three work. The right choice depends on your traffic, model requirements, engineering resources, and how much you are willing to spend on inference.&lt;/p&gt;

&lt;p&gt;For developers working with open models, managed inference is becoming an interesting middle ground. You get an API instead of a GPU to manage, while keeping access to models such as Llama, Qwen, DeepSeek, and Mistral.&lt;/p&gt;

&lt;p&gt;That is the problem Token Factory from Packet.ai is built around.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an LLM inference API?
&lt;/h2&gt;

&lt;p&gt;An LLM inference API gives your application access to a hosted language model through an API.&lt;/p&gt;

&lt;p&gt;Your application sends a request. The provider runs the model on its infrastructure and returns the response.&lt;/p&gt;

&lt;p&gt;You do not have to provision a GPU, download model weights, configure an inference server, or keep track of GPU capacity.&lt;/p&gt;

&lt;p&gt;The basic setup looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your application → LLM API → model → response&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This sounds simple, but the infrastructure behind that API can be quite complicated.&lt;/p&gt;

&lt;p&gt;Running an open model yourself can involve GPU selection, VRAM requirements, model loading, inference engines, autoscaling, monitoring, concurrency, and capacity planning.&lt;/p&gt;

&lt;p&gt;A managed inference provider takes care of that layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the main ways to run an LLM?
&lt;/h2&gt;

&lt;p&gt;There are three common approaches.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;When it makes sense&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;th&gt;What you give up&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Proprietary API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You want a simple way to use leading closed models&lt;/td&gt;
&lt;td&gt;Easy setup and managed infrastructure&lt;/td&gt;
&lt;td&gt;Higher costs at large token volumes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Managed open-model API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You want open models without running GPUs&lt;/td&gt;
&lt;td&gt;Lower-cost inference with managed infrastructure&lt;/td&gt;
&lt;td&gt;Your choices depend on the provider's model lineup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-hosted&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You have high, predictable usage and an infrastructure team&lt;/td&gt;
&lt;td&gt;Full control over models and serving&lt;/td&gt;
&lt;td&gt;GPU costs and the work of running the stack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is no universal winner here.&lt;/p&gt;

&lt;p&gt;A startup processing a few million tokens a month has a very different infrastructure problem from a company processing billions.&lt;/p&gt;

&lt;p&gt;That is why comparing providers only on model quality or price per million tokens can be misleading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use an open-model inference API?
&lt;/h2&gt;

&lt;p&gt;Open models have changed the economics of running AI applications.&lt;/p&gt;

&lt;p&gt;Models such as Llama, Qwen, DeepSeek, and Mistral can be used for many production workloads without requiring developers to build their own model-serving infrastructure.&lt;/p&gt;

&lt;p&gt;That makes it possible to separate two decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which model should run the workload?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who should operate the infrastructure?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can choose an open model while letting someone else handle the GPUs.&lt;/p&gt;

&lt;p&gt;This is the main appeal of a managed open-model inference API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does OpenAI compatibility matter?
&lt;/h2&gt;

&lt;p&gt;This is one of the most practical things to look for when choosing an inference provider.&lt;/p&gt;

&lt;p&gt;If your application already uses the OpenAI SDK, moving to another API can be annoying if you have to change your entire inference layer.&lt;/p&gt;

&lt;p&gt;An OpenAI-compatible API reduces that work.&lt;/p&gt;

&lt;p&gt;Token Factory uses an OpenAI-compatible API. Packet.ai says developers can change the &lt;code&gt;base_url&lt;/code&gt; to &lt;code&gt;api.packet.ai/v1&lt;/code&gt; and replace the API key while keeping their application code unchanged.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.packet.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_PACKET_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llama-3.3-70b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain retrieval-augmented generation.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That matters when you want to test another provider without rebuilding the application around a new SDK.&lt;/p&gt;

&lt;p&gt;It also makes the inference provider easier to change later.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does Token Factory provide?
&lt;/h2&gt;

&lt;p&gt;Token Factory is Packet.ai's managed LLM inference API for open models.&lt;/p&gt;

&lt;p&gt;The current launch catalog has six models:&lt;/p&gt;

&lt;p&gt;Llama 3.1 8B has a 128K context window and costs $0.06 per 1M tokens. It is best suited for classification, routing, and summarization tasks.&lt;/p&gt;

&lt;p&gt;Mistral Small 3 supports a 32K context window and is priced at $0.18 per 1M tokens. It works well for tool calling and structured output generation.&lt;/p&gt;

&lt;p&gt;Llama 3.3 70B also supports a 128K context window and is priced at $0.59 per 1M tokens. It is a strong general-purpose model for chat, RAG systems, and agent workflows.&lt;/p&gt;

&lt;p&gt;Qwen2.5 72B offers a 128K context window at $0.62 per 1M tokens. It is particularly useful for multilingual applications and long-context reasoning tasks.&lt;/p&gt;

&lt;p&gt;DeepSeek-V3 supports a 64K context window and costs $0.85 per 1M tokens. It is optimized for coding, debugging, and complex reasoning problems.&lt;/p&gt;

&lt;p&gt;BGE-M3 has an 8K context window and is priced at $0.02 per 1M tokens. It is designed for embeddings and retrieval tasks in RAG pipelines.&lt;/p&gt;

&lt;p&gt;These are indicative launch prices. Input and output tokens are metered separately at the same listed rate for each model.&lt;/p&gt;

&lt;p&gt;The catalog is deliberately small rather than trying to list every open model available.&lt;/p&gt;

&lt;p&gt;The idea is to cover common production workloads with a handful of models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which LLM should you use?
&lt;/h2&gt;

&lt;p&gt;The cheapest model is not automatically the right model.&lt;/p&gt;

&lt;p&gt;The better question is what the model actually needs to do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Llama 3.1 8B for high-volume tasks
&lt;/h3&gt;

&lt;p&gt;If you are doing classification, routing, summarization, or structured extraction, you may not need a large model.&lt;/p&gt;

&lt;p&gt;Llama 3.1 8B is listed at $0.06 per million tokens on Token Factory and has a 128K context window.&lt;/p&gt;

&lt;p&gt;For simple workloads running at high volume, a smaller model can make a noticeable difference to your inference bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  Llama 3.3 70B for general applications
&lt;/h3&gt;

&lt;p&gt;For chatbots, assistants, RAG applications, and more complex instruction-following tasks, Llama 3.3 70B is the general-purpose option in the catalog.&lt;/p&gt;

&lt;p&gt;It is currently listed at $0.59 per million tokens with a 128K context window.&lt;/p&gt;

&lt;h3&gt;
  
  
  DeepSeek-V3 for coding and reasoning
&lt;/h3&gt;

&lt;p&gt;DeepSeek-V3 is the higher-priced model in the current Token Factory catalog at $0.85 per million tokens.&lt;/p&gt;

&lt;p&gt;It is aimed at coding, debugging, and more complex reasoning workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  BGE-M3 for RAG retrieval
&lt;/h3&gt;

&lt;p&gt;RAG systems have two separate jobs.&lt;/p&gt;

&lt;p&gt;First, retrieve the relevant information.&lt;/p&gt;

&lt;p&gt;Then, generate the answer.&lt;/p&gt;

&lt;p&gt;BGE-M3 can handle the embedding side of that workflow. Token Factory currently lists it at $0.02 per million tokens.&lt;/p&gt;

&lt;p&gt;This is also a good example of why using one model for everything does not always make sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  How much does LLM inference cost?
&lt;/h2&gt;

&lt;p&gt;The answer depends heavily on the model and the number of tokens you process.&lt;/p&gt;

&lt;p&gt;For example, using Token Factory's current listed rates, 10 million output tokens would cost approximately:&lt;/p&gt;

&lt;p&gt;Model: Llama 3.1 8B&lt;br&gt;
Price per 1M tokens: $0.06&lt;br&gt;
Cost for 10M output tokens: $0.60&lt;/p&gt;

&lt;p&gt;Model: Mistral Small 3&lt;br&gt;
Price per 1M tokens: $0.18&lt;br&gt;
Cost for 10M output tokens: $1.80&lt;/p&gt;

&lt;p&gt;Model: Llama 3.3 70B&lt;br&gt;
Price per 1M tokens: $0.59&lt;br&gt;
Cost for 10M output tokens: $5.90&lt;/p&gt;

&lt;p&gt;Model: DeepSeek-V3&lt;br&gt;
Price per 1M tokens: $0.85&lt;br&gt;
Cost for 10M output tokens: $8.50&lt;/p&gt;

&lt;p&gt;These are output-token calculations only. Input tokens are charged separately at the same model rate.&lt;/p&gt;

&lt;p&gt;Actual application costs will depend on how many input and output tokens your application generates.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A chatbot with long prompts and short answers has a different cost profile from an agent that sends large context windows and generates long responses.&lt;/p&gt;
&lt;h2&gt;
  
  
  How does managed inference compare with other providers?
&lt;/h2&gt;

&lt;p&gt;Price comparisons are most useful when you compare the same model.&lt;/p&gt;

&lt;p&gt;For Llama 3.3 70B, Packet.ai currently lists the following comparison:&lt;/p&gt;

&lt;p&gt;Packet.ai Token Factory offers Llama 3.3 70B at $0.59 per 1M input tokens and $0.59 per 1M output tokens, with OpenAI compatibility enabled.&lt;/p&gt;

&lt;p&gt;Together AI (Llama 3.3 70B Turbo) is priced at $1.04 per 1M input tokens and $1.04 per 1M output tokens, and it is OpenAI-compatible.&lt;/p&gt;

&lt;p&gt;Fireworks AI (Llama 3.3 70B) is priced at $0.90 per 1M input tokens and $0.90 per 1M output tokens, and it is OpenAI-compatible.&lt;/p&gt;

&lt;p&gt;Groq (Llama 3.3 70B) is priced at $0.59 per 1M input tokens and $0.79 per 1M output tokens, and it is OpenAI-compatible.&lt;/p&gt;

&lt;p&gt;AWS Bedrock (Llama 3.3 70B) is priced at $0.72 per 1M input tokens and $0.72 per 1M output tokens, but it is not OpenAI-compatible.&lt;/p&gt;

&lt;p&gt;Packet.ai says these rates were verified against the providers' official pricing pages in August 2026.&lt;/p&gt;

&lt;p&gt;The point of a comparison like this is not simply to find the lowest number.&lt;/p&gt;

&lt;p&gt;You also need to look at API compatibility, model availability, latency, throughput, scaling, features, and whether the provider fits your workload.&lt;/p&gt;
&lt;h2&gt;
  
  
  Managed inference vs self-hosting
&lt;/h2&gt;

&lt;p&gt;Self-hosting an open model gives you control.&lt;/p&gt;

&lt;p&gt;It also gives you more work.&lt;/p&gt;

&lt;p&gt;A typical self-hosted setup may involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choosing the right GPU&lt;/li&gt;
&lt;li&gt;Provisioning the machine&lt;/li&gt;
&lt;li&gt;Installing the inference stack&lt;/li&gt;
&lt;li&gt;Downloading model weights&lt;/li&gt;
&lt;li&gt;Managing VRAM&lt;/li&gt;
&lt;li&gt;Configuring vLLM or another inference engine&lt;/li&gt;
&lt;li&gt;Handling traffic spikes&lt;/li&gt;
&lt;li&gt;Monitoring GPU utilization&lt;/li&gt;
&lt;li&gt;Scaling capacity&lt;/li&gt;
&lt;li&gt;Updating the model&lt;/li&gt;
&lt;li&gt;Handling failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you already have an ML infrastructure team and your GPUs stay busy, this may be worth it.&lt;/p&gt;

&lt;p&gt;If you are building an MVP or running an application with unpredictable traffic, it may not be.&lt;/p&gt;

&lt;p&gt;This is where managed inference can make sense.&lt;/p&gt;

&lt;p&gt;You pay for inference instead of spending engineering time running the infrastructure.&lt;/p&gt;
&lt;h2&gt;
  
  
  When is self-hosting cheaper?
&lt;/h2&gt;

&lt;p&gt;There is no fixed answer.&lt;/p&gt;

&lt;p&gt;It comes down to utilization.&lt;/p&gt;

&lt;p&gt;If your GPU is busy around the clock, paying for a dedicated GPU can make sense.&lt;/p&gt;

&lt;p&gt;If your application receives traffic for a few hours a day and sits idle the rest of the time, you are paying for capacity you are not using.&lt;/p&gt;

&lt;p&gt;Token Factory takes the opposite approach. Packet.ai says the service scales to zero, so idle traffic costs nothing, with billing based on tokens rather than GPU hours.&lt;/p&gt;

&lt;p&gt;So the useful comparison is not:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPU price vs token price&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does my workload cost at its actual utilization?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the number worth calculating.&lt;/p&gt;
&lt;h2&gt;
  
  
  Model routing can reduce inference costs
&lt;/h2&gt;

&lt;p&gt;There is another way to control LLM costs: stop sending every request to the same model.&lt;/p&gt;

&lt;p&gt;Consider a customer-support application.&lt;/p&gt;

&lt;p&gt;A simple request such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Where can I download my invoice?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;probably does not need the same model as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Read these three contracts and explain the differences in their termination clauses."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You could route those requests differently.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intent classification → Llama 3.1 8B&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document retrieval → BGE-M3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;General response → Llama 3.3 70B&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complex reasoning → DeepSeek-V3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This kind of routing lets you spend more on the requests that actually need it.&lt;/p&gt;

&lt;p&gt;It also makes your inference architecture easier to optimize as usage grows.&lt;/p&gt;
&lt;h2&gt;
  
  
  What should you look for in an LLM inference API?
&lt;/h2&gt;

&lt;p&gt;Price is important, but it should not be the only thing you compare.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. API compatibility
&lt;/h3&gt;

&lt;p&gt;Can you use your existing OpenAI SDK?&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Model selection
&lt;/h3&gt;

&lt;p&gt;Does the provider offer the models your application actually needs?&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Input and output pricing
&lt;/h3&gt;

&lt;p&gt;Are both sides of the request clearly priced?&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Scaling
&lt;/h3&gt;

&lt;p&gt;What happens when traffic increases?&lt;/p&gt;

&lt;p&gt;What happens when traffic drops?&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Production features
&lt;/h3&gt;

&lt;p&gt;Look for streaming, structured output, tool calling, rate limits, and other features your application depends on.&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Data handling
&lt;/h3&gt;

&lt;p&gt;If you are building an enterprise application, check data retention, training policies, data residency, and compliance support.&lt;/p&gt;

&lt;p&gt;Token Factory currently lists US and EU data residency, DPA support, and says Packet.ai does not train on customer data.&lt;/p&gt;
&lt;h3&gt;
  
  
  7. Fine-tuning support
&lt;/h3&gt;

&lt;p&gt;If you have your own model or LoRA adapter, check whether the provider can host it.&lt;/p&gt;

&lt;p&gt;Token Factory says teams can bring their own LoRA adapter or full checkpoint and serve it through the same OpenAI-compatible endpoint.&lt;/p&gt;
&lt;h2&gt;
  
  
  Who should use a managed open-model API?
&lt;/h2&gt;

&lt;p&gt;A managed open-model API is worth considering if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are building an AI SaaS product&lt;/li&gt;
&lt;li&gt;Are working on an MVP&lt;/li&gt;
&lt;li&gt;Have bursty or unpredictable traffic&lt;/li&gt;
&lt;li&gt;Want to use open models&lt;/li&gt;
&lt;li&gt;Do not want to manage GPUs&lt;/li&gt;
&lt;li&gt;Want usage-based billing&lt;/li&gt;
&lt;li&gt;Already use the OpenAI SDK&lt;/li&gt;
&lt;li&gt;Want to test different models&lt;/li&gt;
&lt;li&gt;Have a small engineering team&lt;/li&gt;
&lt;li&gt;Want to keep infrastructure work out of the product roadmap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Token Factory specifically positions itself for developers, indie builders, and smaller teams that want LLM inference without managing GPU infrastructure.&lt;/p&gt;
&lt;h2&gt;
  
  
  Who should probably self-host?
&lt;/h2&gt;

&lt;p&gt;Self-hosting may be a better fit if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run millions of tokens every day&lt;/li&gt;
&lt;li&gt;Have consistently high GPU utilization&lt;/li&gt;
&lt;li&gt;Need a model that a managed provider does not offer&lt;/li&gt;
&lt;li&gt;Need control over vLLM configuration&lt;/li&gt;
&lt;li&gt;Need specific GPU hardware&lt;/li&gt;
&lt;li&gt;Need multi-GPU serving&lt;/li&gt;
&lt;li&gt;Already have ML infrastructure expertise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, managed inference is not a replacement for self-hosting in every situation.&lt;/p&gt;

&lt;p&gt;The workload decides.&lt;/p&gt;
&lt;h2&gt;
  
  
  How do you switch from OpenAI to an open-model API?
&lt;/h2&gt;

&lt;p&gt;If your application already uses the OpenAI SDK, the process can be straightforward when the new provider supports the same API format.&lt;/p&gt;

&lt;p&gt;With Token Factory, for example, the main change is the API endpoint and API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.packet.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_PACKET_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llama-3.3-70b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize this document.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Packet.ai says the existing application code can remain unchanged when switching to its OpenAI-compatible endpoint.&lt;/p&gt;

&lt;p&gt;For a production migration, you should still test model quality, latency, token usage, error handling, rate limits, and output consistency before switching traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the cheapest LLM inference API?
&lt;/h2&gt;

&lt;p&gt;There is no single provider that is cheapest for every model and workload.&lt;/p&gt;

&lt;p&gt;The useful comparison is model by model.&lt;/p&gt;

&lt;p&gt;For example, Packet.ai currently lists Llama 3.3 70B at $0.59 per million tokens, compared with $1.04 from Together AI and $0.90 from Fireworks AI.&lt;/p&gt;

&lt;p&gt;But price should always be checked against the provider's current pricing page because inference pricing changes frequently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the best API for open-source LLMs?
&lt;/h2&gt;

&lt;p&gt;There is no single best API for every application.&lt;/p&gt;

&lt;p&gt;The right provider depends on the models you need, pricing, latency, throughput, API compatibility, infrastructure, and production features.&lt;/p&gt;

&lt;p&gt;If you want managed access to open models without operating GPUs yourself, providers such as Token Factory, Together AI, Fireworks AI, Groq, and others are worth comparing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is managed inference better than self-hosting?
&lt;/h2&gt;

&lt;p&gt;Not automatically.&lt;/p&gt;

&lt;p&gt;Managed inference removes infrastructure work and can make sense for variable workloads.&lt;/p&gt;

&lt;p&gt;Self-hosting gives you more control and can make economic sense when your GPUs remain highly utilized.&lt;/p&gt;

&lt;p&gt;The best choice depends on your workload and engineering resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an OpenAI-compatible API?
&lt;/h2&gt;

&lt;p&gt;An OpenAI-compatible API follows the same general API structure and request format used by OpenAI.&lt;/p&gt;

&lt;p&gt;This can make it easier to move an existing application between inference providers because the application does not have to be rebuilt around a completely different API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Token Factory?
&lt;/h2&gt;

&lt;p&gt;Token Factory is Packet.ai's managed inference API for open models.&lt;/p&gt;

&lt;p&gt;It currently offers six models, including Llama 3.1 8B, Llama 3.3 70B, Qwen2.5 72B, DeepSeek-V3, Mistral Small 3, and BGE-M3. It supports an OpenAI-compatible API, per-token billing, scale-to-zero, streaming, tool calling, JSON mode, and fine-tune hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger decision is not just the model
&lt;/h2&gt;

&lt;p&gt;LLM infrastructure is becoming easier to access, but that does not mean the architecture decision has disappeared.&lt;/p&gt;

&lt;p&gt;You still need to decide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which model is good enough for the task?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many tokens will the application process?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How predictable is the traffic?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you need to manage GPUs yourself?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How important is API compatibility?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will the workload actually cost at scale?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For some teams, a proprietary API will still be the easiest option.&lt;/p&gt;

&lt;p&gt;For others, self-hosting will make sense.&lt;/p&gt;

&lt;p&gt;And for teams that want open models without running the infrastructure themselves, managed inference sits somewhere in between.&lt;/p&gt;

&lt;p&gt;That is the space Token Factory is targeting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Token Factory
&lt;/h2&gt;

&lt;p&gt;Token Factory gives developers access to open models through a managed, OpenAI-compatible API.&lt;/p&gt;

&lt;p&gt;You can compare the models, pricing, supported features, and infrastructure on the official product page:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://packet.ai/token-factory" rel="noopener noreferrer"&gt;Explore Token Factory&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can also read the full technical breakdown, including the model catalog, pricing comparison, setup instructions, and self-hosted considerations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://packet.ai/blog/token-factory-llm-inference-api" rel="noopener noreferrer"&gt;Read the Token Factory LLM Inference API guide&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are already using the OpenAI SDK, the simplest test is to run an existing workload against the Token Factory endpoint and compare the things that actually matter: &lt;strong&gt;cost, latency, throughput, and output quality.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Renting GPUs for AI? Start with VRAM, Not the GPU</title>
      <dc:creator>Kavya</dc:creator>
      <pubDate>Wed, 05 Aug 2026 10:38:11 +0000</pubDate>
      <link>https://dev.to/kavs/renting-gpus-for-ai-start-with-vram-not-the-gpu-424g</link>
      <guid>https://dev.to/kavs/renting-gpus-for-ai-start-with-vram-not-the-gpu-424g</guid>
      <description>&lt;p&gt;If you're deploying an LLM for the first time, you've probably searched for something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the best GPU for AI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's a common question, but it's usually the wrong place to start.&lt;/p&gt;

&lt;p&gt;Before comparing A100s, H100s, or Blackwell GPUs, answer one question first:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much VRAM does your workload actually need?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choosing a GPU without first sizing VRAM often results in either out-of-memory errors or paying for memory you don't need. That's why infrastructure planning should start with the workload, not the hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why VRAM Comes First&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For LLM inference, GPU memory is usually the first constraint.&lt;/p&gt;

&lt;p&gt;Your VRAM budget isn't just the model itself. It also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model weights&lt;/li&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;Framework overhead&lt;/li&gt;
&lt;li&gt;Production headroom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even two deployments running the same model can require very different amounts of memory depending on context length, concurrency, and inference settings.&lt;/p&gt;

&lt;p&gt;That's why choosing a GPU before understanding memory requirements often leads to poor infrastructure decisions.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Model Size Doesn't Tell the Whole Story&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Many developers assume parameter count directly determines GPU requirements.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;The same model can require dramatically different amounts of VRAM depending on precision and quantization.&lt;/p&gt;

&lt;p&gt;A model running in FP16 may require multiple high-memory GPUs, while the same model using 4-bit quantization can often fit on a single accelerator.&lt;/p&gt;

&lt;p&gt;Understanding this difference is one of the easiest ways to avoid over provisioning infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't Forget the KV Cache&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A deployment that works perfectly during testing can run into memory limits once it reaches production.&lt;/p&gt;

&lt;p&gt;One of the biggest reasons is the KV cache.&lt;/p&gt;

&lt;p&gt;Every active request stores key-value tensors in GPU memory. As context length and concurrency increase, so does memory consumption.&lt;/p&gt;

&lt;p&gt;Ignoring KV cache is one of the most common mistakes when sizing GPUs for production inference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mixture-of-Experts Models Still Need Careful Planning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another misconception is that Mixture-of-Experts (MoE) models only require memory for the experts used during inference.&lt;/p&gt;

&lt;p&gt;While only a subset of experts is activated for each token, the model's weights still need to be loaded into GPU memory when the model starts.&lt;/p&gt;

&lt;p&gt;That means VRAM planning remains just as important for MoE deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Better Way to Choose a GPU&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;Which GPU should I rent?&lt;/p&gt;

&lt;p&gt;Start with these questions:&lt;/p&gt;

&lt;p&gt;Which model am I deploying?&lt;br&gt;
What precision or quantization will I use?&lt;br&gt;
How many concurrent requests do I expect?&lt;br&gt;
What context length will I support?&lt;br&gt;
How much VRAM will the complete workload require?&lt;/p&gt;

&lt;p&gt;Once those answers are clear, selecting the right GPU becomes much more straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choosing AI infrastructure isn't about renting the newest GPU.&lt;/p&gt;

&lt;p&gt;It's about matching your workload to the right amount of memory, compute, and infrastructure.&lt;/p&gt;

&lt;p&gt;Starting with VRAM helps avoid deployment failures, improves GPU utilization, and prevents unnecessary infrastructure costs.&lt;/p&gt;

&lt;p&gt;Packet.ai's guide walks through VRAM sizing for today's leading open-source models, explains common sizing mistakes, and maps workloads to GPU configurations to help teams make better infrastructure decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full guide:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://packet.ai/blog/rent-gpu-for-ai-vram-requirements-guide" rel="noopener noreferrer"&gt;https://packet.ai/blog/rent-gpu-for-ai-vram-requirements-guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>llm</category>
      <category>gpu</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Why memory bandwidth matters more than TFLOPS for LLM inference</title>
      <dc:creator>Kavya</dc:creator>
      <pubDate>Mon, 03 Aug 2026 14:46:45 +0000</pubDate>
      <link>https://dev.to/kavs/why-memory-bandwidth-matters-more-than-tflops-for-llm-inference-4e6g</link>
      <guid>https://dev.to/kavs/why-memory-bandwidth-matters-more-than-tflops-for-llm-inference-4e6g</guid>
      <description>&lt;p&gt;Your GPU's TFLOPS rating does not decide how fast it generates tokens. Memory bandwidth does. Here's the spec that actually separates A100-era inference from H200-era inference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;HBM3e reaches up to 9.6 Gb/s per pin versus HBM2e's 3.2 Gb/s, tripling per-pin signalling speed with the same 1,024-bit interface width.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Total GPU memory bandwidth jumps from 2.0 TB/s on the A100 (HBM2e) to 4.8 TB/s on the H200 (HBM3e), a 140% increase, and 8.0 TB/s on the B200.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LLM token generation (decode phase) is memory-bound: tokens per second tracks memory bandwidth far more closely than TFLOPS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;H200 achieves 31,712 tokens/sec on Llama 2 70B with TensorRT-LLM, 45% faster than H100's 21,806 tokens/sec, driven entirely by the HBM3e memory upgrade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HBM3e is 2.5x more power-efficient per watt than HBM2e, delivering higher bandwidth at lower voltage (1.1V versus 1.2V).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is HBM and how does it work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;High Bandwidth Memory is a form of stacked DRAM co-packaged with the GPU die on a shared silicon interposer, connected through Through-Silicon Vias (TSVs). Unlike GDDR6 memory sitting on separate chips across a PCB trace, HBM stacks sit microns from the compute die. The interface is wider, latency is lower, and bandwidth per watt is substantially better.&lt;/p&gt;

&lt;p&gt;For reference: GDDR6X on a consumer GPU achieves roughly 1.0 TB/s. HBM2e on the A100 doubles that at 2.0 TB/s. HBM3e on the H200 SXM more than doubles HBM2e again at 4.8 TB/s. Each generation achieves this by increasing per-pin signalling speed, not by widening the interface bus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HBM3e vs HBM2e: the numbers&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;HBM2e&lt;/th&gt;
&lt;th&gt;HBM3&lt;/th&gt;
&lt;th&gt;HBM3e&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Flagship GPU&lt;/td&gt;
&lt;td&gt;A100 SXM&lt;/td&gt;
&lt;td&gt;H100 SXM&lt;/td&gt;
&lt;td&gt;H200 / B200 SXM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total bandwidth&lt;/td&gt;
&lt;td&gt;2.0 TB/s&lt;/td&gt;
&lt;td&gt;3.35 TB/s&lt;/td&gt;
&lt;td&gt;4.8 TB/s (H200) / 8.0 TB/s (B200)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pin speed&lt;/td&gt;
&lt;td&gt;~3.2 Gb/s&lt;/td&gt;
&lt;td&gt;6.4 Gb/s&lt;/td&gt;
&lt;td&gt;up to 9.6 Gb/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory capacity&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;td&gt;80 GB&lt;/td&gt;
&lt;td&gt;141 to 192 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating voltage&lt;/td&gt;
&lt;td&gt;1.2V&lt;/td&gt;
&lt;td&gt;1.1V&lt;/td&gt;
&lt;td&gt;1.1V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power efficiency vs HBM2e&lt;/td&gt;
&lt;td&gt;1x&lt;/td&gt;
&lt;td&gt;~2x&lt;/td&gt;
&lt;td&gt;2.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Why LLM decode is memory-bound, not compute-bound&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LLM inference runs in two phases. The prefill phase processes the full input prompt in one forward pass and is compute-bound. The decode phase generates one token per forward pass and is memory-bound: every token requires loading the complete model weight matrix and accumulated KV cache from HBM before a small amount of arithmetic work.&lt;/p&gt;

&lt;p&gt;At batch size 1, arithmetic intensity falls as low as 1 to 2 FLOP per byte — far below the compute-to-bandwidth ratio of even the A100. Memory bandwidth is the first bottleneck for real-world serving workloads at batch sizes below roughly 64 to 128, which covers most production inference deployments.&lt;/p&gt;

&lt;p&gt;This is why upgrading from an A100 (HBM2e, 2.0 TB/s) to an H200 (HBM3e, 4.8 TB/s) improves inference throughput by 2 to 3x on 70B parameter models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benchmark: H200 vs H100 on Llama 2 70B&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;HBM Type&lt;/th&gt;
&lt;th&gt;Bandwidth&lt;/th&gt;
&lt;th&gt;Llama 2 70B (tok/s)&lt;/th&gt;
&lt;th&gt;vs H100&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;H200 SXM&lt;/td&gt;
&lt;td&gt;HBM3e&lt;/td&gt;
&lt;td&gt;4.8 TB/s&lt;/td&gt;
&lt;td&gt;31,712&lt;/td&gt;
&lt;td&gt;+45%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H100 SXM&lt;/td&gt;
&lt;td&gt;HBM3&lt;/td&gt;
&lt;td&gt;3.35 TB/s&lt;/td&gt;
&lt;td&gt;21,806&lt;/td&gt;
&lt;td&gt;baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>llm</category>
      <category>gpu</category>
      <category>nvidia</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
