<?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: Sergio Andres Usma</title>
    <description>The latest articles on DEV Community by Sergio Andres Usma (@vonusma).</description>
    <link>https://dev.to/vonusma</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3862386%2F22c543a8-ac4b-4ef3-951b-27469c282aa3.png</url>
      <title>DEV Community: Sergio Andres Usma</title>
      <link>https://dev.to/vonusma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vonusma"/>
    <language>en</language>
    <item>
      <title>Creating a 50 GB Swap File on Jetson AGX Orin (Root on NVMe)</title>
      <dc:creator>Sergio Andres Usma</dc:creator>
      <pubDate>Sun, 05 Apr 2026 17:59:02 +0000</pubDate>
      <link>https://dev.to/vonusma/creating-a-50-gb-swap-file-on-jetson-agx-orin-root-on-nvme-ijd</link>
      <guid>https://dev.to/vonusma/creating-a-50-gb-swap-file-on-jetson-agx-orin-root-on-nvme-ijd</guid>
      <description>&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;This document describes the process of creating, tuning, and managing a large swap file on an NVIDIA Jetson AGX Orin 64 GB running Ubuntu 22.04.5 LTS aarch64. The configuration is specifically optimized for running large language models (LLMs) alongside CUDA, cuMB, and TensorRT by leveraging a fast NVMe SSD as the primary swap backing store.&lt;/p&gt;

&lt;p&gt;The implementation was validated using a 50 GB swap file configuration alongside existing zram layers. The procedure successfully extended the usable memory capacity, allowing for the deployment of larger models without triggering immediate Out-Of-Memory (OOM) errors, provided the storage-to-RAM paging latency is acceptable.&lt;/p&gt;

&lt;p&gt;This tutorial serves as a technical reference for advanced Jetson and Linux users. It provides a reproducible method for extending virtual memory on edge AI hardware to support demanding 34B–70B parameter models.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Hardware and Software Environment
&lt;/h2&gt;

&lt;p&gt;The target environment is an NVIDIA Jetson AGX Orin Developer Kit equipped with 64 GB of unified memory. The system runs Ubuntu 22.04.5 LTS on an aarch64 kernel (5.15.185-tegra). The installation includes JetPack 6.2.2, providing the necessary software stack for AI inference, including CUDA 12.6, cuDNN 9.3.0, and TensorRT 10.3.0.&lt;/p&gt;

&lt;p&gt;The primary storage for the swap file is the NVMe SSD, which serves as the root filesystem. This choice is critical for minimizing the performance penalty during memory paging operations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hardware&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;NVIDIA Jetson AGX Orin Developer Kit 64 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04.5 LTS aarch64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kernel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5:15.185-tegra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;64 GB unified memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;JetPack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;6.2.2+b24 (nvidia-jetpack)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CUDA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12.6 (nvcc 12.6.68)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cuDNN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;9.3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TensorRT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10.3.0.30-1+cuda12.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1 — Jetson AGX Orin environment for swap configuration&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Swap Location Strategy
&lt;/h2&gt;

&lt;p&gt;Effective swap placement is determined by the throughput and endurance of the underlying storage media. On the Jetson AGX Orin, the system utilizes eMMC for the boot partition and an NVMe SSD for the primary root filesystem.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Approx Speed&lt;/th&gt;
&lt;th&gt;Recommendation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NVMe SSD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~2000 MB/s&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Best&lt;/strong&gt; — primary location for swap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;eMMC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~400 MB/s&lt;/td&gt;
&lt;td&gt;Secondary fallback; higher wear risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;USB Drive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~100 MB/s&lt;/td&gt;
&lt;td&gt;Not recommended due to high latency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 2 — Recommended swap backing storage on Jetson AGX Orin&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For this configuration, the swap file is placed directly on the NVMe-backed root filesystem (&lt;code&gt;/&lt;/code&gt;) at &lt;code&gt;/swapfile&lt;/code&gt;. This ensures the highest possible I/O performance for paging operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Step-by-Step Swap File Creation
&lt;/h2&gt;

&lt;p&gt;The following steps outline the allocation and initialization of a 50 GB swap file.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Check Devices and Free Space
&lt;/h3&gt;

&lt;p&gt;Before allocation, verify the available space on the target partition. The &lt;code&gt;lsblk&lt;/code&gt; command confirms the mount points, while &lt;code&gt;df -h&lt;/code&gt; verifies the capacity.&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="c"&gt;# List block devices and mount points&lt;/span&gt;
lsblk &lt;span class="nt"&gt;-o&lt;/span&gt; NAME,SIZE,TYPE,MOSQL,ROTA

&lt;span class="c"&gt;# Check free space on the root filesystem&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current configuration shows approximately 636 GB of available space on &lt;code&gt;/dev/nvme0n1p1&lt;/code&gt;, which is more than sufficient for a 50 GB allocation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Create the Swap File
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;fallocate&lt;/code&gt; utility is used to pre-allocate the file space efficiently.&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="c"&gt;# Allocate 50 GB for the swap file on the root filesystem&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fallocate &lt;span class="nt"&gt;-l&lt;/span&gt; 50G /swapfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.3 Secure and Format the Swap File
&lt;/h3&gt;

&lt;p&gt;Security is paramount; the swap file must be restricted to root-only access to prevent sensitive data leakage from memory to disk.&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="c"&gt;# Restrict permissions to root read/write only&lt;/span&gt;
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;600 /swapfile

&lt;span class="c"&gt;# Format the file as swap space&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkswap /swapfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.4 Enable the Swap File
&lt;/h3&gt;

&lt;p&gt;Once formatted, the swap file must be activated in the running kernel.&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="c"&gt;# Enable the swap file&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;swapon /swapfile

&lt;span class="c"&gt;# Verify active swap devices&lt;/span&gt;
swapon &lt;span class="nt"&gt;--show&lt;/span&gt;

&lt;span class="c"&gt;# Confirm memory and swap totals&lt;/span&gt;
free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Making Swap Persistent Across Reboots
&lt;/h2&gt;

&lt;p&gt;To ensure the swap file is automatically re-enabled upon system restart, an entry must be added to the &lt;code&gt;/etc/fstab&lt;/code&gt; configuration file.&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="c"&gt;# Append the swap file definition to /etc/fstab&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'/swapfile none swap sw 0 0'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/fstab

&lt;span class="c"&gt;# Verify the entry exists&lt;/span&gt;
&lt;span class="nb"&gt;grep &lt;/span&gt;swap /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Tuning Swappiness and zram for LLM Workloads
&lt;/h2&gt;

&lt;p&gt;Optimal performance for LLM inference requires tuning the kernel to prioritize physical RAM and the compressed &lt;code&gt;zram&lt;/code&gt; layer over the disk-backed swap file.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 Adjust Swappiness and Cache Pressure
&lt;/h3&gt;

&lt;p&gt;Lowering the &lt;code&gt;swappiness&lt;/code&gt; value instructs the kernel to avoid swapping pages to the NVMe SSD unless absolutely necessary.&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="c"&gt;# Apply settings immediately&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl vm.swappiness&lt;span class="o"&gt;=&lt;/span&gt;10
&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl vm.vfs_cache_pressure&lt;span class="o"&gt;=&lt;/span&gt;50

&lt;span class="c"&gt;# Persist the settings across reboots&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'vm.swappiness=10'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/sysctl.conf
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'vm.vfs_cache_pressure=50'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/sysctl.conf

&lt;span class="c"&gt;# Reload sysctl configuration&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Swappiness&lt;/th&gt;
&lt;th&gt;Behavior Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Swap only when absolutely out of RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Recommended&lt;/strong&gt; for LLM workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typical Linux default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;100&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very aggressive swapping&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 3 — Swappiness values and behavior for Jetson LLM use&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Relationship Between zram and /swapfile
&lt;/h2&gt;

&lt;p&gt;The Jetson system utilizes a tiered memory architecture. The &lt;code&gt;zram-config&lt;/code&gt; service provides several compressed RAM-based swap devices (&lt;code&gt;zram0&lt;/code&gt; through &lt;code&gt;zram11&lt;/code&gt;). The hierarchy of memory allocation is as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Physical RAM&lt;/strong&gt; (64 GB unified memory)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;zram&lt;/strong&gt; (Compressed swap in RAM, ~31 GB total)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVMe Swap File&lt;/strong&gt; (50 GB on &lt;code&gt;/swapfile&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This tiered approach allows the kernel to handle small, compressible allocations within the highly efficient &lt;code&gt;zram&lt;/code&gt; layer before resorting to the higher-latency NVMe disk-backed swap.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Removing or Reconfiguring the Swap File
&lt;/h2&gt;

&lt;p&gt;If disk space needs to be reclaimed, the swap file can be decommissioned following these steps:&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="c"&gt;# Disable the swap file usage&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;swapoff /swapfile

&lt;span class="c"&gt;# Remove the entry from /etc/fstab&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'/\/swapfile/d'&lt;/span&gt; /etc/fstab

&lt;span class="c"&gt;# Delete the physical file&lt;/span&gt;
&lt;span class="nb"&gt;sudo rm&lt;/span&gt; /swapfile

&lt;span class="c"&gt;# Reload sysctl to refresh kernel state&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;sysctl &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  8. Practical Outcomes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Increased Capacity:&lt;/strong&gt; Successfully established a 50 GB swap area on NVMe, expanding the total virtual memory capacity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability:&lt;/strong&gt; Provided a critical safety margin for running 70B parameter models (e.g., Q4_K_M) that may exceed the 64 GB physical RAM limit during peak usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized Hierarchy:&lt;/strong&gt; Integrated the new disk-backed swap into the existing &lt;code&gt;zram&lt;/code&gt; architecture without disrupting the compressed RAM layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; Achieved a fully automated configuration that survives system reboots via &lt;code&gt;/etc/fstab&lt;/code&gt; tuning.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. Conclusions
&lt;/h2&gt;

&lt;p&gt;Configuring a large, NVMe-backed swap file is a highly effective strategy for maximizing the utility of the NVIDIA Jetson AGX Orin 64 GB for large-scale AI workloads. By following the documented procedure of using &lt;code&gt;fallocate&lt;/code&gt;, setting strict &lt;code&gt;chmod 600&lt;/code&gt; permissions, and tuning &lt;code&gt;swappiness&lt;/code&gt; to 10, users can achieve a stable environment capable of handling models that exceed physical memory boundaries.&lt;/p&gt;

&lt;p&gt;While the performance penalty of disk-based swapping is unavoidable, the use of high-speed NVMe storage and a tiered &lt;code&gt;zram&lt;/code&gt; approach minimizes the impact on inference latency, making it a viable solution for non-interactive or batch processing of 34B–70B parameter models.&lt;/p&gt;

</description>
      <category>jetson</category>
      <category>linux</category>
      <category>swap</category>
      <category>agxorin</category>
    </item>
    <item>
      <title>Check NVIDIA Jetson AGX Orin Specifications</title>
      <dc:creator>Sergio Andres Usma</dc:creator>
      <pubDate>Sun, 05 Apr 2026 16:41:10 +0000</pubDate>
      <link>https://dev.to/vonusma/check-nvidia-jetson-agx-orin-specifications-3h0</link>
      <guid>https://dev.to/vonusma/check-nvidia-jetson-agx-orin-specifications-3h0</guid>
      <description>&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;This document provides a systematic, reproducible method for new users to verify every hardware and software component on an NVIDIA Jetson AGX Orin 64 GB developer kit running Ubuntu 22.04.5 LTS. The approach walks through the exact commands needed to collect CPU, GPU, memory, kernel, JetPack, CUDA, cuDNN, TensorRT, and OpenCV data, then compresses the findings into a single‑line summary for quick sharing.&lt;/p&gt;

&lt;p&gt;The verification process works on a clean Jetson image with no custom configuration. All commands are standard Ubuntu packages, so they can be run immediately after booting without installing additional tools. The script at the end automates the entire workflow for future use.&lt;/p&gt;

&lt;p&gt;Reading the summary proves the system matches the advertised specifications and serves as a baseline for troubleshooting or compliance checks. Developers, reviewers, and CI pipelines can all reuse this tutorial to guarantee that a Jetson board meets its nominal performance envelope.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Hardware and Software Environment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 Jetson board identification
&lt;/h3&gt;

&lt;p&gt;Run:&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;cat&lt;/span&gt; /sys/firmware/devicetree/base/model
&lt;span class="nb"&gt;cat&lt;/span&gt; /sys/firmware/devicetree/base/compatible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NVIDIA Jetson AGX Orin Developer Kit
nvidia,p3737-0000+p3701-0005
nvidia,p3701-0005
nvidia,tegra234
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirms the AGX Orin developer kit and the expected compatible strings.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Operating system (Ubuntu 22.04.5 LTS)
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsb_release &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/os-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Typical output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;Ubuntu 22.04.5 LTS&lt;/span&gt;
&lt;span class="py"&gt;Release&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;        &lt;span class="s"&gt;22.04&lt;/span&gt;
&lt;span class="py"&gt;Codename&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;       &lt;span class="s"&gt;jammy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;PRETTY_NAME&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Ubuntu 22.04.5 LTS"&lt;/span&gt;
&lt;span class="py"&gt;VERSION&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"22.04.5 LTS (Jammy Jellyfish)"&lt;/span&gt;
&lt;span class="py"&gt;ARCH&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;x86_64&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These lines show you are on Ubuntu 22.04.5 LTS for aarch64.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. CPU details
&lt;/h2&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lscpu
&lt;span class="nb"&gt;cat&lt;/span&gt; /proc/cpuinfo | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s2"&gt;"model name|Processor|Features"&lt;/span&gt;
&lt;span class="nb"&gt;nproc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key fields from &lt;code&gt;lscpu&lt;/code&gt;:&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;Architecture&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;          &lt;span class="s"&gt;aarch64&lt;/span&gt;
&lt;span class="na"&gt;Model name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;            &lt;span class="s"&gt;Cortex-A78AE&lt;/span&gt;
&lt;span class="na"&gt;CPU(s)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;                &lt;span class="m"&gt;12&lt;/span&gt;
&lt;span class="na"&gt;CPU max MHz&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;           &lt;span class="m"&gt;2201.6001&lt;/span&gt;
&lt;span class="na"&gt;CPU min MHz&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;           &lt;span class="m"&gt;115.2000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/proc/cpuinfo&lt;/code&gt; repeats the same model name (&lt;code&gt;ARMv8 Processor rev 1 (v8l)&lt;/code&gt;) and lists the supported flags.&lt;/p&gt;

&lt;p&gt;This tells the user the board has 12 ARMv8 cores running up to ~2.2 GHz.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Memory
&lt;/h2&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /proc/meminfo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;free -h&lt;/code&gt; example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mem:   61Gi  used 5.8Gi  free 51Gi  buff/cache 3.6Gi  available 55Gi
Swap:  30Gi  used 0B     free 30Gi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/proc/meminfo&lt;/code&gt; provides the raw totals in kB (e.g., &lt;code&gt;MemTotal: 64335836 kB&lt;/code&gt;).&lt;br&gt;&lt;br&gt;
Together they show ~7.4 GiB used out of ~61 GiB.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. JetPack and Jetson Linux (L4T) versions
&lt;/h2&gt;
&lt;h3&gt;
  
  
  4.1 JetPack meta‑package
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt-cache show nvidia-jetpack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Relevant lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source: nvidia-jetpack (6.2.2)
Version: 6.2.2+b24
Architecture: arm64
Maintainer: NVIDIA Corporation
Depends: nvidia-jetpack-runtime (= 6.2.2+b24), nvidia-jetpack-dev (= 6.2.2+b24)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.2 L4T release (Jetson Linux R36.5)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/nv_tegra_release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output example:&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="c"&gt;# R36 (release), REVISION: 5.0, GCID: 43688277, BOARD: generic, EABI: aarch64, DATE: Fri Jan 16 03:50:45 UTC 2026&lt;/span&gt;
&lt;span class="nv"&gt;TARGET_USERSPACE_LIB_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvidia
&lt;span class="nv"&gt;TARGET_USERSPACE_LIB_DIR_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;usr/lib/aarch64-linux-gnu/nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also verify the core package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dpkg-query &lt;span class="nt"&gt;--show&lt;/span&gt; nvidia-l4t-core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nvidia-l4t-core 36.5.0-20260115194252
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These two commands confirm you are on JetPack 6.2.2 with the matching L4T release.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. CUDA, cuDNN, TensorRT, OpenCV
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 CUDA toolkit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvcc &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cuda compilation tools, release 12.6, V12.6.68
Build cuda_12.6.r12.6/compiler.34714021_0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.2 cuDNN
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dpkg &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;libcudnn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows &lt;code&gt;libcudnn9-cuda-12 9.3.0.75-1&lt;/code&gt; (runtime) and corresponding dev packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 TensorRT
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dpkg &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;TensorRT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tensorrt 10.3.0.30-1+cuda12.5 arm64 Meta package for TensorRT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.4 OpenCV
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import cv2; print(cv2.__version__)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;code&gt;4.8.0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;All four pieces of software are installed and their versions match the target specification.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Practical Outcomes (what worked)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hardware detection succeeded; model and compatible strings are correct.
&lt;/li&gt;
&lt;li&gt;OS verification produced the expected Ubuntu 22.04.5 LTS aarch64 string.
&lt;/li&gt;
&lt;li&gt;CPU info confirms 12‑core ARMv8 at ~2.2 GHz.
&lt;/li&gt;
&lt;li&gt;Memory shows the advertised 61 GiB total with minimal swap usage.
&lt;/li&gt;
&lt;li&gt;JetPack 6.2.2 and L4T R36.5 were identified automatically.
&lt;/li&gt;
&lt;li&gt;CUDA 12.6, cuDNN 9.3, TensorRT 10.3, and OpenCV 4.8 are present in the exact versions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Conclusion (recommendations)
&lt;/h2&gt;

&lt;p&gt;The Jetson AGX Orin 64 GB developer kit is fully configured as advertised. The verification steps can be automated via the script provided in Section 8, making it suitable for CI pipelines, regression testing, or compliance reporting.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The host name (&lt;code&gt;ubuntu&lt;/code&gt;) and host display (&lt;code&gt;NVIDIA Jetson AGX Orin Develop&lt;/code&gt;) are placeholders; you can replace them with the actual values shown by &lt;code&gt;hostname&lt;/code&gt; and &lt;code&gt;lscpu&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  8. Automated script – &lt;code&gt;jetson_sysinfo.sh&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="c"&gt;# Simple system summary for NVIDIA Jetson AGX Orin&lt;/span&gt;

&lt;span class="c"&gt;# Hardware&lt;/span&gt;
&lt;span class="nv"&gt;HW_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'\0'&lt;/span&gt; &amp;lt;/sys/firmware/devicetree/base/model 2&amp;gt;/dev/null&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;HW_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HW_MODEL&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="s2"&gt;"Unknown"&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# OS&lt;/span&gt;
&lt;span class="nv"&gt;OS_DESC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lsb_release &lt;span class="nt"&gt;-d&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f2-&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;OS_DESC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OS_DESC&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;'^PRETTY_NAME='&lt;/span&gt; /etc/os-release 2&amp;gt;/dev/null | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;-f2&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;KERNEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# CPU&lt;/span&gt;
&lt;span class="nv"&gt;CPU_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-m1&lt;/span&gt; &lt;span class="s2"&gt;"model name"&lt;/span&gt; /proc/cpuinfo 2&amp;gt;/dev/null | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;: &lt;span class="nt"&gt;-f2-&lt;/span&gt; | xargs&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CPU_MODEL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;CPU_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lscpu | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;: &lt;span class="s1"&gt;'/Model name/ {print $2}'&lt;/span&gt; | xargs&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;CPU_CORES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;nproc&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;CPU_MAX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lscpu | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;: &lt;span class="s1"&gt;'/CPU max MHz/ {gsub(/ /,"",$2); print $2}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;CPU_MIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lscpu | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;: &lt;span class="s1"&gt;'/CPU min MHz/ {gsub(/ /,"",$2); print $2}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Jetson / JetPack / L4T&lt;/span&gt;
&lt;span class="nv"&gt;L4T_CORE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg-query &lt;span class="nt"&gt;--show&lt;/span&gt; nvidia-l4t-core 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $2}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;JP_SRC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;apt-cache show nvidia-jetpack 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;': '&lt;/span&gt; &lt;span class="s1"&gt;'/^Source:/ {print $2; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;JP_VER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;apt-cache show nvidia-jetpack 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;': '&lt;/span&gt; &lt;span class="s1"&gt;'/^Version:/ {print $2; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;JP_ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;apt-cache show nvidia-jetpack 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;': '&lt;/span&gt; &lt;span class="s1"&gt;'/^Architecture:/ {print $2; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;JP_MAINT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;apt-cache show nvidia-jetpack 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;': '&lt;/span&gt; &lt;span class="s1"&gt;'/^Maintainer:/ {print $2; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;JP_DEPS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;apt-cache show nvidia-jetpack 2&amp;gt;/dev/null | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;': '&lt;/span&gt; &lt;span class="s1"&gt;'/^Depends:/ {print $2; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;NVREL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-m1&lt;/span&gt; &lt;span class="s1"&gt;'^# R'&lt;/span&gt; /etc/nv_tegra_release 2&amp;gt;/dev/null | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/^# //'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# CUDA&lt;/span&gt;
&lt;span class="nv"&gt;NVCC_VER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;nvcc &lt;span class="nt"&gt;--version&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# cuDNN&lt;/span&gt;
&lt;span class="nv"&gt;CUDNN_LINE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'/libcudnn[0-9]-cuda-12/ {print $2" " $3; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CUDNN_LINE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;CUDNN_LINE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"not found"&lt;/span&gt;

&lt;span class="c"&gt;# TensorRT&lt;/span&gt;
&lt;span class="nv"&gt;TRT_LINE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'/^ii  tensorrt / {print $2" " $3; exit}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TRT_LINE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;TRT_LINE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"not found"&lt;/span&gt;

&lt;span class="c"&gt;# OpenCV&lt;/span&gt;
&lt;span class="nv"&gt;OPENCV_VER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import cv2; print(cv2.__version__)"&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"not found"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Print summary&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hardware: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HW_MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; 64GB"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"OS: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OS_DESC&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Host: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOST&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Kernel: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;KERNEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"CPU: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CPU_MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; (&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CPU_CORES&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;) @ &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CPU_MAX&lt;/span&gt;&lt;span class="p"&gt;%.*&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;MHz"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"CPU max MHz: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CPU_MAX&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"CPU min MHz: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CPU_MIN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Memory: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MEM_LINE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"nvidia-l4t-core: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;L4T_CORE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$NVREL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"L4T release: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NVREL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Package: nvidia-jetpack"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Source: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;JP_SRC&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Version: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;JP_VER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Architecture: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;JP_ARCH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Maintainer: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;JP_MAINT&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Depends: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;JP_DEPS&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"nvcc: NVIDIA (R) Cuda compiler driver"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NVCC_VER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"cuDNN: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CUDNN_LINE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"OpenCV Version: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OPENCV_VER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"TensorRT: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TRT_LINE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to use&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano jetson_sysinfo.sh          &lt;span class="c"&gt;# paste the script&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x jetson_sysinfo.sh      &lt;span class="c"&gt;# make it executable&lt;/span&gt;
./jetson_sysinfo.sh             &lt;span class="c"&gt;# run – prints a compact summary&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script prints exactly the same one‑line summary shown in Section 6, making sharing as proof of configuration trivial.&lt;/p&gt;

</description>
      <category>jetson</category>
      <category>agx</category>
      <category>orin</category>
      <category>linux</category>
    </item>
    <item>
      <title>Enabling Maximum Performance Mode on NVIDIA Jetson AGX Orin 64 GB</title>
      <dc:creator>Sergio Andres Usma</dc:creator>
      <pubDate>Sun, 05 Apr 2026 15:58:34 +0000</pubDate>
      <link>https://dev.to/vonusma/enabling-maximum-performance-mode-on-nvidia-jetson-agx-orin-64-gb-53nb</link>
      <guid>https://dev.to/vonusma/enabling-maximum-performance-mode-on-nvidia-jetson-agx-orin-64-gb-53nb</guid>
      <description>&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;This document explains how to configure an NVIDIA Jetson AGX Orin 64 GB Developer Kit running Ubuntu 22.04.5 LTS and JetPack 6.2.2 to operate in maximum performance mode for AI workloads, especially LLM inference. It describes how to select the MAXN power mode, lock system clocks at their highest frequencies, and verify that the configuration is correctly applied with built-in NVIDIA tools and simple benchmarks. The tutorial targets users who want reproducible, high-throughput inference on a Jetson AGX Orin while retaining awareness of thermal and power constraints.&lt;/p&gt;

&lt;p&gt;It documents the practical impact of enabling MAXN and &lt;code&gt;jetson_clocks&lt;/code&gt;, showing how GPU frequency and token generation throughput can increase roughly threefold compared to default settings. The guide also covers how to persist these settings using a systemd service so that the device consistently boots into a high-performance state suitable for heavy AI workloads. Where relevant, it notes expected frequency values and normal operating temperatures for the Jetson AGX Orin platform. &lt;/p&gt;

&lt;p&gt;The purpose of this tutorial is to serve as a reusable reference for configuring maximum performance on Jetson-based AI systems, integrated into a larger workflow that includes swap configuration and tool installation for LLM workloads. Readers with basic Linux and Jetson familiarity can follow step-by-step commands to prepare the device, validate the configuration, and understand when to switch between performance and power-saving modes. &lt;/p&gt;




&lt;h2&gt;
  
  
  1. Hardware and Software Environment
&lt;/h2&gt;

&lt;p&gt;Your system is an &lt;strong&gt;NVIDIA Jetson AGX Orin Developer Kit 64 GB&lt;/strong&gt; running Ubuntu 22.04.5 LTS (aarch64) with JetPack 6.2.2, CUDA 12.6, cuDNN 9.3.0, OpenCV 4.8.0, and TensorRT 10.3.0.30 installed. The CPU is an ARMv8 12-core processor with a maximum clock around 2.2 GHz, and the board exposes NVIDIA’s &lt;code&gt;nvpmodel&lt;/code&gt; and &lt;code&gt;jetson_clocks&lt;/code&gt; tools for power and clock management.&lt;/p&gt;

&lt;p&gt;According to NVIDIA’s specifications, the Jetson AGX Orin 64 GB configuration can achieve up to &lt;strong&gt;275 TOPS&lt;/strong&gt; when configured in MAXN mode with clocks locked to their maximum frequencies. This tutorial assumes shell access with &lt;code&gt;sudo&lt;/code&gt; privileges and that NVIDIA JetPack components are correctly installed from the &lt;code&gt;nvidia-jetpack&lt;/code&gt; meta-package. &lt;/p&gt;




&lt;h2&gt;
  
  
  2. Why Maximum Performance Matters for AI
&lt;/h2&gt;

&lt;p&gt;By default, without MAXN mode and &lt;code&gt;jetson_clocks&lt;/code&gt;, the Jetson AGX Orin keeps GPU frequencies around 600 MHz to maintain thermal and power safety margins. Under these conservative defaults, a 7B LLM typically reaches only about 8 tokens per second during inference, which limits interactivity and throughput.&lt;/p&gt;

&lt;p&gt;When MAXN and &lt;code&gt;jetson_clocks&lt;/code&gt; are enabled, the GPU can run at approximately 1300 MHz, and end-to-end LLM inference throughput can increase to roughly 18–25 tokens per second on the same 7B model. This represents about a &lt;strong&gt;3x&lt;/strong&gt; performance improvement and makes interactive LLM usage and larger batch workloads more practical on the device.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Inspecting and Selecting Power Modes
&lt;/h2&gt;

&lt;p&gt;Before changing anything, check the current power mode:&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;nvpmodel &lt;span class="nt"&gt;-q&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command prints the active power mode, and the integer at the bottom of the output is the current mode ID (for example, &lt;code&gt;0&lt;/code&gt; for MAXN). This lets you confirm whether the system already runs in MAXN or a more restrictive power profile.&lt;/p&gt;

&lt;p&gt;To see all available power modes for the Jetson AGX Orin 64 GB under JetPack 6.2, run:&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;nvpmodel &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="nt"&gt;--verbose&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-A1&lt;/span&gt; &lt;span class="s2"&gt;"MODE_NAME"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On this platform, the mode table typically looks like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode ID&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;TDP&lt;/th&gt;
&lt;th&gt;CPU cores active&lt;/th&gt;
&lt;th&gt;GPU max freq&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;MAXN&lt;/td&gt;
&lt;td&gt;No limit (~60 W)&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;1300 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;MODE_50W&lt;/td&gt;
&lt;td&gt;50 W&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;1100 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;MODE_30W&lt;/td&gt;
&lt;td&gt;30 W&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;854 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;MODE_15W&lt;/td&gt;
&lt;td&gt;15 W&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;612 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use mode ID 0 (MAXN) for the high-performance configuration described here.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Enabling MAXN Mode and Locking Clocks
&lt;/h2&gt;

&lt;p&gt;To switch the Jetson into MAXN mode, run:&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;nvpmodel &lt;span class="nt"&gt;-m&lt;/span&gt; 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This update is written into &lt;code&gt;/etc/nvpmodel.conf&lt;/code&gt; and therefore persists across reboots until you select a different mode. After this step, the Jetson operates under the highest power budget supported by its cooling solution, which is ideal for compute-heavy AI tasks.&lt;/p&gt;

&lt;p&gt;Next, lock all clocks (CPU, GPU, and memory bus) to their maximum frequencies:&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;jetson_clocks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command is temporary and resets after each reboot, so it must be re-applied or automated to persist. Once applied, the system stops using dynamic frequency scaling and instead pins frequencies to their highest supported values for maximum compute performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Verifying Power Mode and Clock Frequencies
&lt;/h2&gt;

&lt;p&gt;To confirm that MAXN is active and clocks are locked, run:&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="c"&gt;# Confirm power mode&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;nvpmodel &lt;span class="nt"&gt;-q&lt;/span&gt;

&lt;span class="c"&gt;# Check GPU and CPU frequencies&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;jetson_clocks &lt;span class="nt"&gt;--show&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;jetson_clocks --show&lt;/code&gt; output should include lines similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=729600 MaxFreq=2201600 CurrentFreq=2201600 ...
GPU MinFreq=306000000 MaxFreq=1300500000 CurrentFreq=1300500000
EMC MinFreq=204000000 MaxFreq=3199000000 CurrentFreq=3199000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a correct configuration, &lt;code&gt;CurrentFreq&lt;/code&gt; should match &lt;code&gt;MaxFreq&lt;/code&gt; for CPU, GPU, and EMC entries, indicating that frequencies are pinned at their maximums. If you see lower current frequencies, reapply &lt;code&gt;jetson_clocks&lt;/code&gt; or investigate thermal throttling conditions.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Making jetson_clocks Persistent with systemd
&lt;/h2&gt;

&lt;p&gt;To ensure &lt;code&gt;jetson_clocks&lt;/code&gt; runs automatically at boot, first try enabling the built-in service:&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;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nvargus-daemon 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;jetson_clocks 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Service not found, creating..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On some JetPack versions the &lt;code&gt;jetson_clocks&lt;/code&gt; service may not exist, in which case you can create a custom systemd unit file. The following commands define such a service, reload systemd, and enable it:&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 tee&lt;/span&gt; /etc/systemd/system/jetson_clocks.service &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;'
[Unit]
Description=Lock Jetson clocks at maximum frequency
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/jetson_clocks
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;jetson_clocks
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start jetson_clocks
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status jetson_clocks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Afterward, every boot should automatically apply &lt;code&gt;jetson_clocks&lt;/code&gt;, and &lt;code&gt;systemctl status jetson_clocks&lt;/code&gt; should report the service as active. This eliminates the need to manually run the command after each restart while keeping the configuration transparent and reversible via systemd.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Quick Performance Benchmark with LLM Inference
&lt;/h2&gt;

&lt;p&gt;Once MAXN and &lt;code&gt;jetson_clocks&lt;/code&gt; are active, you can validate real-world AI performance using an LLM benchmark. If you have an Ollama container running (as configured in a later phase of your workflow), execute:&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="c"&gt;# Benchmark: time to generate 100 tokens with a 3B model&lt;/span&gt;
docker &lt;span class="nb"&gt;exec &lt;/span&gt;ollama ollama run llama3.2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--verbose&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"Write a 100-word story about a robot"&lt;/span&gt; 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s2"&gt;"eval rate|tokens/s"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In MAXN mode on the Jetson AGX Orin, a llama3.2 3B Q4_K_M model is expected to reach around 25–40 tokens per second, significantly higher than default power modes. If observed throughput is substantially lower, recheck power mode, clock locking, and ensure the system is not thermally throttling or swapping heavily.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Monitoring Power, Temperature, and Thermal Safety
&lt;/h2&gt;

&lt;p&gt;While models are running, monitor system health from a second terminal:&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="c"&gt;# Option A: tegrastats (every second)&lt;/span&gt;
tegrastats &lt;span class="nt"&gt;--interval&lt;/span&gt; 1000

&lt;span class="c"&gt;# Option B: jtop (interactive dashboard)&lt;/span&gt;
jtop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;tegrastats&lt;/code&gt;, key fields include &lt;code&gt;GPU@XXX°C&lt;/code&gt; for GPU temperature (targeting below about 85°C under sustained load), &lt;code&gt;POM_5V_GPU Xm/Ym&lt;/code&gt; for GPU power draw in milliwatts, and &lt;code&gt;Tboard@XXX&lt;/code&gt; for board temperature. MAXN mode is designed to work within the active cooling capabilities of the AGX Orin module, but blocked vents or poor airflow can still cause throttling.&lt;/p&gt;

&lt;p&gt;Typical thermal ranges under continuous AI workloads are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Normal&lt;/th&gt;
&lt;th&gt;Throttle starts&lt;/th&gt;
&lt;th&gt;Emergency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;50–75 °C&lt;/td&gt;
&lt;td&gt;~85 °C&lt;/td&gt;
&lt;td&gt;~95 °C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;45–70 °C&lt;/td&gt;
&lt;td&gt;~85 °C&lt;/td&gt;
&lt;td&gt;~95 °C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Board&lt;/td&gt;
&lt;td&gt;40–60 °C&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If &lt;code&gt;tegrastats&lt;/code&gt; shows &lt;code&gt;throttle=1&lt;/code&gt;, improve ventilation or reduce workload intensity until the system stabilizes.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Choosing Performance vs Power-Saving Modes
&lt;/h2&gt;

&lt;p&gt;Depending on your workload, you may want to switch between MAXN and more efficient modes. Common scenarios include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Recommended mode&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LLM inference (7B–70B)&lt;/td&gt;
&lt;td&gt;MAXN (0)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo nvpmodel -m 0 &amp;amp;&amp;amp; sudo jetson_clocks&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vision / video processing&lt;/td&gt;
&lt;td&gt;MAXN (0)&lt;/td&gt;
&lt;td&gt;same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compiling code (e.g., LLM)&lt;/td&gt;
&lt;td&gt;MAXN (0)&lt;/td&gt;
&lt;td&gt;same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Idle / light development&lt;/td&gt;
&lt;td&gt;MODE_30W (2)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo nvpmodel -m 2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Background low-power tasks&lt;/td&gt;
&lt;td&gt;MODE_15W (3)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo nvpmodel -m 3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Switching modes only changes the power envelope, while &lt;code&gt;jetson_clocks&lt;/code&gt; controls frequency locking; together they give fine-grained control over performance versus efficiency. You can integrate these commands into your own scripts to toggle modes depending on job type or time of day.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Practical Outcomes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MAXN mode and &lt;code&gt;jetson_clocks&lt;/code&gt; are enabled on the Jetson AGX Orin 64 GB, with GPU, CPU, and EMC frequencies pinned at their maximums for AI workloads. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A systemd service (built-in or custom) ensures &lt;code&gt;jetson_clocks&lt;/code&gt; runs at boot so performance is consistent across reboots.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple LLM benchmarks confirm real-world throughput improvements (on the order of 3x token/sec) compared to default power modes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous monitoring with &lt;code&gt;tegrastats&lt;/code&gt; or &lt;code&gt;jtop&lt;/code&gt; provides visibility into temperature, power draw, and potential thermal throttling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clear commands exist to switch between high-performance and power-saving modes depending on workload requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. Conclusion
&lt;/h2&gt;

&lt;p&gt;Configuring the Jetson AGX Orin 64 GB into MAXN mode with locked clocks is a necessary step to realize the board’s full 275 TOPS potential for LLM inference and other GPU-intensive workloads. The combination of &lt;code&gt;nvpmodel&lt;/code&gt; for power profiles and &lt;code&gt;jetson_clocks&lt;/code&gt; for frequency locking provides deterministic performance while staying within the cooling design limits of the developer kit.&lt;/p&gt;

&lt;p&gt;With the steps in this tutorial, you can reproducibly enable, verify, and persist maximum performance settings, then validate them using practical AI benchmarks and runtime telemetry tools. In a larger workflow, this configuration forms the foundation for subsequent tasks such as creating swap space for very large models and installing build tools for optimized inference frameworks.&lt;/p&gt;

</description>
      <category>nvidia</category>
      <category>jetson</category>
      <category>agx</category>
      <category>ai</category>
    </item>
    <item>
      <title>Exploratory Installation of Unsloth on NVIDIA Jetson AGX Orin 64 GB</title>
      <dc:creator>Sergio Andres Usma</dc:creator>
      <pubDate>Sun, 05 Apr 2026 14:52:21 +0000</pubDate>
      <link>https://dev.to/vonusma/exploratory-installation-of-unsloth-on-nvidia-jetson-agx-orin-64-gb-12pp</link>
      <guid>https://dev.to/vonusma/exploratory-installation-of-unsloth-on-nvidia-jetson-agx-orin-64-gb-12pp</guid>
      <description>&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;This report documents an exploratory attempt to install and run Unsloth (including Unsloth Studio) on an NVIDIA Jetson AGX Orin 64 GB using a Docker-based workflow with &lt;code&gt;dustynv/l4t-ml:r36.4.0&lt;/code&gt; as the base image.&lt;br&gt;&lt;br&gt;
The process successfully validated GPU-accelerated PyTorch and Unsloth’s core Python package on Jetson, but exposed substantial friction and incompatibilities in getting Unsloth Studio’s full stack (Studio backend, frontend, Triton/TorchInductor/TorchAo dependencies, and custom virtual environment) to run reliably on this ARM-based edge platform.&lt;br&gt;&lt;br&gt;
The goal of this write-up is to provide a precise technical account so that other practitioners (and the Unsloth team) can (a) reproduce or avoid the same pitfalls, and (b) better assess the current suitability of Unsloth Studio for Jetson-class devices.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Hardware and Software Environment
&lt;/h2&gt;

&lt;p&gt;The experiments were conducted on the following platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Device:&lt;/strong&gt; NVIDIA Jetson AGX Orin Developer Kit (64 GB)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 22.04.5 LTS, aarch64
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JetPack / L4T:&lt;/strong&gt; JetPack 6.2.2, L4T 36.5.0
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CUDA:&lt;/strong&gt; 12.6 (nvcc 12.6.68)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cuDNN:&lt;/strong&gt; 9.3.0
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TensorRT:&lt;/strong&gt; 10.3.0
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker:&lt;/strong&gt; Engine with NVIDIA Container Runtime enabled (&lt;code&gt;--runtime=nvidia&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Base ML image:&lt;/strong&gt; &lt;code&gt;dustynv/l4t-ml:r36.4.0&lt;/code&gt; (from Jetson Containers), which provides:

&lt;ul&gt;
&lt;li&gt;PyTorch compiled for Jetson (aarch64) with CUDA and TensorRT integration
&lt;/li&gt;
&lt;li&gt;JupyterLab and common ML tooling
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Host-side persistent storage for this project was centralized under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/unsloth/
  build/      # Dockerfile and build context
  work/       # notebooks, datasets, outputs
  cache/      # general cache inside the container
  hf/         # Hugging Face cache
  jupyter/    # Jupyter config
  ssh/        # SSH keys/config (optional)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layout was bind-mounted into the container to ensure persistence across container rebuilds.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Docker Image Construction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Base Dockerfile
&lt;/h3&gt;

&lt;p&gt;The starting point was a custom image layered on top of &lt;code&gt;dustynv/l4t-ml:r36.4.0&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; dustynv/l4t-ml:r36.4.0&lt;/span&gt;

&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; DEBIAN_FRONTEND=noninteractive \&lt;/span&gt;
    PIP_NO_CACHE_DIR=1 \
    PYTHONUNBUFFERED=1 \
    SHELL=/bin/bash \
    JUPYTER_PORT=8888 \
    STUDIO_PORT=8000 \
    WORKSPACE=/workspace \
    HF_HOME=/workspace/.cache/huggingface \
    TRANSFORMERS_CACHE=/workspace/.cache/huggingface \
    HUGGINGFACE_HUB_CACHE=/workspace/.cache/huggingface

&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; root&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;--no-install-recommends&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    curl git wget ca-certificates build-essential pkg-config &lt;span class="se"&gt;\
&lt;/span&gt;    python3-pip python3-dev python3-venv &lt;span class="se"&gt;\
&lt;/span&gt;    openssh-server &lt;span class="nb"&gt;sudo &lt;/span&gt;nano htop tmux &lt;span class="se"&gt;\
&lt;/span&gt;    libopenblas-dev libssl-dev libffi-dev &lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /var/lib/apt/lists/&lt;span class="k"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /var/run/sshd /workspace/work /workspace/.cache/huggingface /root/.jupyter

&lt;span class="k"&gt;RUN &lt;/span&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--upgrade&lt;/span&gt; pip setuptools wheel

&lt;span class="c"&gt;# Remove Jetson-specific custom pip indexes to avoid transient outages&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip config &lt;span class="nb"&gt;unset &lt;/span&gt;global.index-url &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip config &lt;span class="nb"&gt;unset &lt;/span&gt;global.extra-index-url &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Generic Python dependencies via PyPI&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nv"&gt;PIP_INDEX_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://pypi.org/simple python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    fastapi &lt;span class="s2"&gt;"uvicorn[standard]"&lt;/span&gt; gradio &lt;span class="se"&gt;\
&lt;/span&gt;    accelerate transformers peft trl datasets sentencepiece protobuf safetensors &lt;span class="se"&gt;\
&lt;/span&gt;    huggingface_hub

&lt;span class="c"&gt;# Install Unsloth (core + zoo) from GitHub/PyPI&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nv"&gt;PIP_INDEX_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://pypi.org/simple python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s2"&gt;"unsloth @ git+https://github.com/unslothai/unsloth.git"&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s2"&gt;"unsloth-zoo @ git+https://github.com/unslothai/unsloth.git"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Optionally attempt bitsandbytes (may be fragile on Jetson)&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nv"&gt;PIP_INDEX_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://pypi.org/simple python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install &lt;/span&gt;bitsandbytes &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /workspace&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8000 8888 22&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["/bin/bash"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key design choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reuse NVIDIA’s &lt;code&gt;l4t-ml&lt;/code&gt; stack instead of installing PyTorch/TensorRT manually, since it is tuned for Jetson.&lt;/li&gt;
&lt;li&gt;Explicitly unset custom Jetson pip indexes before installing Unsloth, to avoid failures due to unavailable Jetson-specific mirrors while installing generic packages (e.g. &lt;code&gt;fastapi&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Install Unsloth via GitHub (or PyPI) rather than using the x86-oriented Docker image &lt;code&gt;unsloth/unsloth&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The image was built with:&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;cd&lt;/span&gt; ~/unsloth/build
&lt;span class="nb"&gt;sudo &lt;/span&gt;docker build &lt;span class="nt"&gt;--no-cache&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; &lt;span class="nb"&gt;local&lt;/span&gt;/unsloth-studio:jetson-l4tml-r36.4.0 &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Container Runtime and GPU Validation
&lt;/h2&gt;

&lt;p&gt;A persistent container was created with host networking and bind mounts:&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;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; unsloth-studio &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--restart&lt;/span&gt; unless-stopped &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--runtime&lt;/span&gt; nvidia &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--network&lt;/span&gt; host &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--shm-size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;16g &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;HF_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/workspace/.cache/huggingface &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;TRANSFORMERS_CACHE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/workspace/.cache/huggingface &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;HUGGINGFACE_HUB_CACHE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/workspace/.cache/huggingface &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/unsloth/work:/workspace/work &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/unsloth/cache:/workspace/.cache &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/unsloth/hf:/root/.cache/huggingface &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/unsloth/jupyter:/root/.jupyter &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/unsloth/ssh:/root/.ssh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;local&lt;/span&gt;/unsloth-studio:jetson-l4tml-r36.4.0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the container, GPU support was verified with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import torch;
print(torch.__version__);
print(torch.cuda.is_available());
print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no cuda')"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirmed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;torch&lt;/code&gt; version 2.6.0 (from the &lt;code&gt;l4t-ml&lt;/code&gt; stack),&lt;/li&gt;
&lt;li&gt;CUDA available,&lt;/li&gt;
&lt;li&gt;device name reported as “Orin”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thus, the base ML environment inside the container was correctly accelerated on Jetson.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Installing Unsloth Core
&lt;/h2&gt;

&lt;p&gt;Within the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import unsloth; print('unsloth ok')"&lt;/span&gt;
unsloth &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI output showed the main Unsloth commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;train&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inference&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;export&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;list-checkpoints&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;studio&lt;/code&gt; (subcommand group)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, importing Unsloth triggered a warning stacktrace related to Triton, TorchInductor, and TorchAo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ImportError: cannot import name 'AttrsDescriptor' from triton.compiler.compiler&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Errors inside &lt;code&gt;torch._inductor.runtime.hints&lt;/code&gt; and &lt;code&gt;torchao.quantization&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This indicates that parts of the current Unsloth stack assume a Triton/TorchInductor/TorchAo configuration aligned with x86_64 desktop/server builds of PyTorch, which is not trivially compatible with the Jetson-specific PyTorch build shipping in &lt;code&gt;l4t-ml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Despite these warnings, the CLI remained usable for basic commands, and GPU acceleration for standard PyTorch operations was intact.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Attempting to Enable Unsloth Studio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 CLI-Level Status
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;unsloth studio&lt;/code&gt; subcommand was present:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;unsloth studio &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;showed options such as &lt;code&gt;--host&lt;/code&gt;, &lt;code&gt;--port&lt;/code&gt;, &lt;code&gt;--frontend&lt;/code&gt;, and subcommands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;stop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reset-password&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Attempting to start Studio directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;unsloth studio &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Studio not set up. Run install.sh first.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This implies that Studio expects an auxiliary installation step that sets up its environment (frontend, backend, and venv).&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Running &lt;code&gt;unsloth studio setup&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Unsloth documentation describes a developer mode where Studio is installed via &lt;code&gt;uv&lt;/code&gt; and a dedicated virtual environment.&lt;br&gt;&lt;br&gt;
Following this pattern, the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;unsloth studio setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Successful installation of &lt;code&gt;nvm&lt;/code&gt;, Node LTS, and &lt;code&gt;bun&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Successful build of the frontend (“frontend built”)&lt;/li&gt;
&lt;li&gt;But then:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python venv not found at /root/.unsloth/studio/unsloth_studio
Run install.sh first to create the environment:
  curl -fsSL https://unsloth.ai/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thus, the CLI expects a virtual environment under &lt;code&gt;/root/.unsloth/studio/unsloth_studio&lt;/code&gt; that appears to be normally created by the official &lt;code&gt;install.sh&lt;/code&gt; script.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 Manual Creation of the Studio Virtual Environment
&lt;/h3&gt;

&lt;p&gt;Rather than relying on &lt;code&gt;install.sh&lt;/code&gt; (which is tuned for other platforms and may interfere with the Jetson-specific PyTorch/Triton stack), a manual venv was created:&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;cd&lt;/span&gt; /root/.unsloth/studio
uv venv unsloth_studio &lt;span class="nt"&gt;--python&lt;/span&gt; 3.10
&lt;span class="nb"&gt;source&lt;/span&gt; /root/.unsloth/studio/unsloth_studio/bin/activate

uv pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--index-url&lt;/span&gt; https://pypi.org/simple unsloth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This installed Unsloth (and a complete stack of dependencies) into the venv, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;torch&lt;/code&gt;, &lt;code&gt;torchao&lt;/code&gt;, &lt;code&gt;triton&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;transformers&lt;/code&gt;, &lt;code&gt;accelerate&lt;/code&gt;, &lt;code&gt;peft&lt;/code&gt;, &lt;code&gt;trl&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitsandbytes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;unsloth&lt;/code&gt;, &lt;code&gt;unsloth-zoo&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Within the venv, &lt;code&gt;unsloth studio -H 0.0.0.0 -p 8000&lt;/code&gt; still failed due to missing backend dependencies (&lt;code&gt;structlog&lt;/code&gt;), which were then installed.&lt;br&gt;&lt;br&gt;
However, repeated attempts to start Studio continued to reveal issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ModuleNotFoundError: No module named 'structlog'&lt;/code&gt; (due to pip confusion between global and venv environments)&lt;/li&gt;
&lt;li&gt;Friction in adding pip to the venv (pip not present or not found via &lt;code&gt;python -m pip&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A recurring tension between the &lt;code&gt;uv&lt;/code&gt;-managed environment and the classical &lt;code&gt;pip&lt;/code&gt; expectations coming from Studio’s backend modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, even after installing the necessary Python packages, the CLI still treated Studio as “not set up” and insisted on running the global &lt;code&gt;install.sh&lt;/code&gt; script.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Failure Modes and Root Causes
&lt;/h2&gt;

&lt;p&gt;The main failure modes observed were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Triton / TorchInductor / TorchAo incompatibilities&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Errors when importing Unsloth related to &lt;code&gt;AttrsDescriptor&lt;/code&gt; in Triton and TorchInductor.
&lt;/li&gt;
&lt;li&gt;These components are not officially supported or tuned for the Jetson-specific PyTorch build, causing runtime import and registration issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Studio’s tight coupling to its own venv and installer&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Studio expects a very particular environment layout under &lt;code&gt;~/.unsloth/studio/unsloth_studio&lt;/code&gt; created by &lt;code&gt;install.sh&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Deviating from the installer (e.g., manual or &lt;code&gt;uv&lt;/code&gt;-only installation) leads to missing venv markers, which the CLI interprets as “Studio not set up.”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tooling friction on Jetson (uv + venv + pip)&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The combination of &lt;code&gt;uv&lt;/code&gt;-managed environments with a system Python and Docker base image that already has a global &lt;code&gt;pip&lt;/code&gt; led to situations where:

&lt;ul&gt;
&lt;li&gt;The venv had no &lt;code&gt;pip&lt;/code&gt; initially.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;python -m ensurepip&lt;/code&gt; installed pip globally rather than into the venv.&lt;/li&gt;
&lt;li&gt;The actual &lt;code&gt;pip&lt;/code&gt; used to install backend dependencies was the global one, leaving the venv incomplete.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mismatch with Jetson Containers philosophy&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jetson Containers and &lt;code&gt;l4t-ml&lt;/code&gt; are built around Nvidia’s optimized PyTorch/TensorRT stacks, while Unsloth Studio’s modern pipeline assumes desktop/server-class Triton and TorchInductor configurations.
&lt;/li&gt;
&lt;li&gt;This leads to a mismatch that is non-trivial to reconcile in a maintainable way.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  7. Practical Outcomes
&lt;/h2&gt;

&lt;p&gt;Despite the failure to get &lt;strong&gt;Unsloth Studio&lt;/strong&gt; fully operational, the following outcomes were achieved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A validated &lt;strong&gt;GPU-accelerated Unsloth core&lt;/strong&gt; environment on Jetson:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;unsloth&lt;/code&gt; CLI installed and usable.&lt;/li&gt;
&lt;li&gt;PyTorch 2.6.0 with CUDA on Orin working correctly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;A reusable &lt;strong&gt;Docker-based ML devbox&lt;/strong&gt; (&lt;code&gt;local/unsloth-studio:jetson-l4tml-r36.4.0&lt;/code&gt;) with:

&lt;ul&gt;
&lt;li&gt;A clear persistent directory layout (&lt;code&gt;~/unsloth&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Host networking and shared volumes suitable for integration with other Jetson Containers (e.g., llama.cpp, vLLM, NanoLLM, llama-factory).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Empirical evidence that, as of this experiment, &lt;strong&gt;Unsloth Studio is not yet a drop-in web UI solution for Jetson AGX Orin&lt;/strong&gt;, due to:

&lt;ul&gt;
&lt;li&gt;Triton/TorchInductor/TorchAo assumptions, and&lt;/li&gt;
&lt;li&gt;Strong coupling to the &lt;code&gt;install.sh&lt;/code&gt;-managed environment.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Recommendations for Jetson Practitioners
&lt;/h2&gt;

&lt;p&gt;For current Jetson AGX Orin users:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Unsloth core selectively&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unsloth’s Python API and CLI can still be valuable for fine-tuning/export workflows that do not rely heavily on Triton/TorchInductor-specific optimizations.
&lt;/li&gt;
&lt;li&gt;Prefer using the Jetson-optimized PyTorch from &lt;code&gt;l4t-ml&lt;/code&gt; and be cautious with features that depend on TorchInductor/Triton.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rely on Jetson Containers for serving and fine-tuning&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For serving and fine-tuning large models on Jetson, the containers in the Jetson Containers ecosystem (llama.cpp, vLLM, MLC, TensorRT-LLM, NanoLLM, llama-factory) are significantly more mature and better integrated with JetPack and L4T.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Treat Unsloth Studio on Jetson as experimental&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Until there is first-class ARM/Jetson support (or a documented variant of &lt;code&gt;install.sh&lt;/code&gt; and Studio’s backend explicitly targeting Jetson), Studio should be considered an experimental integration on this hardware.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  9. Suggestions for the Unsloth Team
&lt;/h2&gt;

&lt;p&gt;Based on this experience, the following changes would materially improve the viability of Unsloth Studio on Jetson and similar edge platforms:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documented “headless / no-Triton” mode&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A configuration profile that can disable or bypass TorchInductor/Triton/TorchAo, relying purely on standard PyTorch kernels when running on unsupported architectures such as Jetson.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Explicit ARM/Jetson support statement and checks&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear statements in the documentation regarding ARM/aarch64 support status, with runtime checks that either:

&lt;ul&gt;
&lt;li&gt;Enable a safe, reduced feature set, or&lt;/li&gt;
&lt;li&gt;Fail fast with a clear, actionable message.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Studio installation mode for preexisting Python stacks&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A variant of &lt;code&gt;install.sh&lt;/code&gt; or &lt;code&gt;studio setup&lt;/code&gt; that:

&lt;ul&gt;
&lt;li&gt;Can attach to an existing PyTorch environment (e.g., Jetson’s &lt;code&gt;l4t-ml&lt;/code&gt;), and&lt;/li&gt;
&lt;li&gt;Creates only the additional Studio-specific venv/backend/frontend without attempting to reconfigure PyTorch or Triton.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Minimal dependency profile for Studio backend&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A smaller “core backend” dependency set for Studio that avoids complex quantization stacks and heavy compiler integrations when running in constrained or embedded environments.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  10. Conclusion
&lt;/h2&gt;

&lt;p&gt;The experiment demonstrates that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing &lt;strong&gt;Unsloth core&lt;/strong&gt; on Jetson AGX Orin via a Dockerized &lt;code&gt;l4t-ml&lt;/code&gt; base image is feasible, and the resulting environment is usable for GPU-accelerated LLM workflows.&lt;/li&gt;
&lt;li&gt;However, enabling &lt;strong&gt;Unsloth Studio&lt;/strong&gt;—the full web UI for training and serving—on Jetson currently encounters significant hurdles due to the interaction between Triton/TorchInductor, TorchAo, &lt;code&gt;uv&lt;/code&gt;-managed venvs, and the assumptions baked into &lt;code&gt;install.sh&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a practical standpoint, Jetson users are better served today by combining Unsloth core (where useful) with the existing Jetson Containers ecosystem, while treating Unsloth Studio as an experimental component on this hardware.&lt;br&gt;&lt;br&gt;
From a community and engineering perspective, this experiment highlights concrete areas where incremental changes and documentation from the Unsloth team could unlock a powerful edge deployment story on Jetson-class devices.&lt;/p&gt;

</description>
      <category>nvidia</category>
      <category>jetson</category>
      <category>unsloth</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
