<?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: Elina Norling</title>
    <description>The latest articles on DEV Community by Elina Norling (@elina_norling_embedl).</description>
    <link>https://dev.to/elina_norling_embedl</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%2F3557597%2Fa31eb847-7acb-48ef-ae6f-fa1dd53d74f3.png</url>
      <title>DEV Community: Elina Norling</title>
      <link>https://dev.to/elina_norling_embedl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elina_norling_embedl"/>
    <language>en</language>
    <item>
      <title>Launch Celebration: Win a Jetson Orin Nano Super or Raspberry Pi 5!</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Sun, 14 Dec 2025 10:24:57 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/launch-celebration-win-a-jetson-orin-nano-super-or-raspberry-pi-5-4ilo</link>
      <guid>https://dev.to/elina_norling_embedl/launch-celebration-win-a-jetson-orin-nano-super-or-raspberry-pi-5-4ilo</guid>
      <description>&lt;h3&gt;
  
  
  AI hardware giveaway!
&lt;/h3&gt;

&lt;p&gt;We’ve just introduced the latest major update to our devtool &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;Embedl Hub&lt;/a&gt;: Our own remote device cloud including 50 various mobile devices!🥳&lt;/p&gt;

&lt;p&gt;To celebrate, we’re hosting a giveaway!🤩. The most valuable feedback after using our platform will win an NVIDIA Jetson Orin Nano Super. We are also giving away 4x Raspberry Pi 5 to everyone who places 2nd to 5th. &lt;/p&gt;

&lt;p&gt;Read about it &lt;a href="https://hub.embedl.com/blog/embedl-hub-device-cloud-launch-celebration/?utm_source=devto" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Join the competition!
&lt;/h3&gt;

&lt;p&gt;Get started with the &lt;a href="https://hub.embedl.com/docs/quickstart/?utm_source=devto" rel="noopener noreferrer"&gt;quickstart guide&lt;/a&gt;. The winners are announced on January 20. Stay tuned!&lt;/p&gt;

&lt;p&gt;Our favorite features of Embedl Hub for on-device AI development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compile your model for execution on CPU, GPU, NPU or other AI accelerators&lt;/li&gt;
&lt;li&gt;Quantize your model for lower latency and memory usage&lt;/li&gt;
&lt;li&gt;Compare performance metrics across different devices&lt;/li&gt;
&lt;li&gt;Identify which device delivers the best results for your model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of our latest blog posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From PyTorch to Shipping local AI on Android &lt;a href="https://hub.embedl.com/blog/from-pytorch-to-shipping-local-ai-on-android/?utm_source=devto" rel="noopener noreferrer"&gt;(link)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Diagnosing layer sensitivity during post training quantization &lt;a href="https://hub.embedl.com/blog/diagnosing-layer-sensitivity/?utm_source=devto" rel="noopener noreferrer"&gt;(link)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're happy to help if you have any questions!&lt;/p&gt;

</description>
      <category>computervision</category>
      <category>mobile</category>
      <category>webdev</category>
      <category>androiddev</category>
    </item>
    <item>
      <title>Launch Celebration: Win a Jetson Orin Nano Super or Raspberry Pi 5!</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Sun, 14 Dec 2025 09:54:55 +0000</pubDate>
      <link>https://dev.to/embedl-hub/launch-celebration-win-a-jetson-orin-nano-super-or-raspberry-pi-5-39om</link>
      <guid>https://dev.to/embedl-hub/launch-celebration-win-a-jetson-orin-nano-super-or-raspberry-pi-5-39om</guid>
      <description>&lt;p&gt;We’re excited to introduce the latest major update to &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;Embedl Hub&lt;/a&gt;: our own remote device cloud!&lt;/p&gt;

&lt;p&gt;To mark the occasion, we’re launching a community competition and giveaway. The participant who provides the most valuable feedback after using our platform to run and benchmark AI models on any device in our device cloud will win an NVIDIA Jetson Orin Nano Super. We’re also giving a Raspberry Pi 5 to everyone who places 2nd to 5th.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to participate
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Join Embedl Hub and &lt;a href="https://hub.embedl.com/docs/?utm_source=devto" rel="noopener noreferrer"&gt;get started&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run a benchmark on any device from our &lt;a href="https://hub.embedl.com/docs/remote-hardware-clouds#embedl-hub-embedl/?utm_source=devto" rel="noopener noreferrer"&gt;device cloud&lt;/a&gt; and (optionally) compile and quantize the model before. This is done with the Embedl Hub Python library.&lt;/li&gt;
&lt;li&gt;Give us your feedback about the platform in the feedback form available after login (see image below). Once you have submitted your feedback, you enter the competition.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmmi42dx8ixzo7akpvem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmmi42dx8ixzo7akpvem.png" alt=" " width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You choose the level of feedback you give us, but to win the Jetson &lt;br&gt;
Orin Nano Super, your feedback needs to be the most valuable for us in our platform development going forward. It could be a missing feature that would be useful, a friction point you discovered in the workflow after many runs, or something obvious we simply hadn’t thought of.&lt;/p&gt;

&lt;p&gt;The winners are announced on January 20. Stay tuned!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxoo4emgboggs9j3l6irx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxoo4emgboggs9j3l6irx.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NVIDIA Jetson Orin Nano Super at a glance&lt;/strong&gt;&lt;br&gt;
NVIDIA’s latest compact edge-AI “super developer kit,” delivering up to 67 TOPS of AI performance in a small, power-efficient form factor. Ideal for running advanced on-device AI workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Raspberry Pi 5 at a glance&lt;/strong&gt;&lt;br&gt;
The newest generation of the iconic Raspberry Pi, featuring a 2.4 GHz quad-core ARM Cortex-A76 CPU, faster I/O, and significantly improved performance for modern hobby, IoT, and edge-AI projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Join the competition!
&lt;/h4&gt;

&lt;p&gt;Get started with the &lt;a href="https://hub.embedl.com/docs/quickstart/?utm_source=devto" rel="noopener noreferrer"&gt;quickstart guide&lt;/a&gt;. If you’d like help getting models running, or if you have questions or suggestions, just reach out to the team in our &lt;a href="https://join.slack.com/t/embedl-hub/shared_invite/zt-2y87a2s4x-E7LSbKH50HDgyOUiPq84tA" rel="noopener noreferrer"&gt;Slack channel&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we’ve built this platform
&lt;/h2&gt;

&lt;p&gt;On-device AI offers many advantages; enabling low-latency interactions, offline functionality and total privacy to name a few. But running AI on an edge device is far harder than running it on a PC. One of the most common problems is that performance varies widely across devices and chipsets with different hardware limitations, such as memory constraints and battery budgets. Not every device has enough AI processing power to handle heavy workloads with real-time requirements, and this makes on-device performance inherently unpredictable; models that work perfectly on a few devices may be slow or broken on others.&lt;/p&gt;

&lt;p&gt;For example, if you’re building a mobile app with on-device AI features, these issues often only show up after release when the app runs on user devices you never tested. This leads to frustrated users, negative reviews, and developers removing the feature entirely – losing the benefits of on-device AI. Read more about why on-device AI is important and the challenges that follow in this &lt;a href="https://hub.embedl.com/blog/from-pytorch-to-shipping-local-ai-on-android/?utm_source=devto" rel="noopener noreferrer"&gt;blogpost&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because these issues are ones we’ve encountered ourselves, we set out to build this tool that removes this uncertainty. What you can do with the platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;a href="https://hub.embedl.com/blog/diagnosing-layer-sensitivity/?utm_source=devto" rel="noopener noreferrer"&gt;layer-wise peak signal-to-noise ratio (PSNR)&lt;/a&gt; for better quantization&lt;/li&gt;
&lt;li&gt;View a history of all your submitted benchmarks&lt;/li&gt;
&lt;li&gt;Compare performance metrics (such as latency and memory usage, and PSNR) across different devices&lt;/li&gt;
&lt;li&gt;Identify which device delivers the best results for your model&lt;/li&gt;
&lt;li&gt;Download detailed logs and reports for further analysis
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6gh24h84syphjt6uf0gr.png" alt=" " width="800" height="369"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it out at &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;hub.embedl.com&lt;/a&gt; and let us know what you think!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>raspberrypi</category>
      <category>deeplearning</category>
    </item>
    <item>
      <title>From PyTorch to Shipping local AI on Android</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Sat, 13 Dec 2025 20:42:33 +0000</pubDate>
      <link>https://dev.to/embedl-hub/from-pytorch-to-shipping-local-ai-on-android-6g9</link>
      <guid>https://dev.to/embedl-hub/from-pytorch-to-shipping-local-ai-on-android-6g9</guid>
      <description>&lt;p&gt;On-device AI offers many advantages for Android apps; enabling low-latency interactions, offline functionality and total privacy to name a few. But running AI on local devices is far harder than running it in a Jupyter notebook.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll break down why it is so hard and walk through how to optimize and run models on Android devices. We’ll also demonstrate how you can test it on different devices without needing physical access to a wide range of hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why run AI locally and why it’s hard on Android
&lt;/h2&gt;

&lt;p&gt;Many modern Android apps rely on real-time intelligence to deliver a smooth and responsive user experience. Pose detection in fitness apps, AR filters in social apps, on-device audio processing, and live classification are all examples. These tasks benefit from running models locally rather than in the cloud, since the data can be processed directly where it is generated. Local inference gives you speed, privacy, and the ability to work offline – but it also comes with a challenge: getting these models to perform consistently across the enormous range of Android devices.&lt;/p&gt;

&lt;p&gt;This became clear in a conversation I had recently with my friend Noah, an Android developer working on a lightweight pose-detection feature for a fitness app. He trained a MobileNet-based model in PyTorch, converted it to TFLite, and verified it on the three phones he had available, a Pixel 7, Galaxy S21, and a mid-range Motorola. Everything looked smooth. But after release, he started receiving reviews from users on other devices reporting sluggish performance, unstable frame rates, and in some cases even crashes before inference even began.&lt;/p&gt;

&lt;p&gt;Noah’s experience isn’t unusual. In fact, it’s one of the most common issues Android developers run into when working with on-device AI. Apps that work perfectly on a few phones but feel slow or broken on others, frustrated users leaving negative reviews, and developers end up removing the on-device feature – losing many of the benefits of running AI on-device in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Digging deeper into the problem
&lt;/h2&gt;

&lt;p&gt;To understand why situations like Noah’s happen, we need to look more closely at why the same model can show completely different latency, stability, and device-specific performance across devices, making on-device AI development so challenging.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Performance varies across devices and chipsets
&lt;/h4&gt;

&lt;p&gt;Android hardware is highly diverse. Two devices released the same year can behave completely differently when running the exact same model. One may use an NPU and reach 60 FPS, another may fall back to GPU, and a third may run everything on the CPU and struggle to reach usable performance or even crash.&lt;/p&gt;

&lt;p&gt;Rule of thumb:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPUs run almost anything but rarely meet real-time needs.&lt;/li&gt;
&lt;li&gt;GPUs are faster but depend heavily on runtime (TFLite GPU delegate, NNAPI, Vulkan) support&lt;/li&gt;
&lt;li&gt;NPUs are fastest but only for models correctly adapted and compiled correctly for that chipset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it’s not just about faster or slower processors. Android devices vary widely in how their accelerators and drivers support different operations and precisions, and runtime delegates often make different decisions about which compute units to use. As a result, two phones can execute the same model through completely different paths – resulting in noticeably different stability and performance on each device.&lt;/p&gt;

&lt;p&gt;This makes broad testing essential. Yet most developers don’t have access to many devices, which is why issues often remain hidden until after launch.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Development complexity and setup effort discourage local AI
&lt;/h4&gt;

&lt;p&gt;Even once a model works on your own device, getting it ready for actual deployment requires navigating a surprisingly complex toolchain. Exporting a model from PyTorch to ONNX and then to TFLite is only the beginning. Many hardware vendors expose their own delegates, runtimes, and SDKs, and each of them behaves slightly differently.&lt;/p&gt;

&lt;p&gt;Developers I’ve spoken to say that even small on-device features, such as a simple classifier or filter, can take a huge amount of effort to get running well. Setting up TFLite GPU delegates, NNAPI, or vendor-specific runtimes on Qualcomm or Google Tensor devices requires time and experimentation. And when something doesn’t work, error messages are often vague, making it difficult to pinpoint whether the issue is an operator the hardware doesn’t support, relies on a precision (like FP32) that the accelerator can’t handle, or simply unsupported hardware acceleration.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Battery, speed, and hardware limitations are obstacles
&lt;/h4&gt;

&lt;p&gt;Finally, even if you get the model running, real-world constraints remain. Phones have limited thermal budgets; running heavy models can overheat the device and throttle performance. Battery drain is a persistent concern – users will quickly uninstall an app that consumes too much power. Smaller or very old phones also have limited RAM and weaker accelerators, meaning some models simply will not run well no matter how they are optimized.&lt;/p&gt;

&lt;p&gt;Several developers we have talked to point out that “not every device has enough AI processing power to handle heavy workloads with real-time requirements,” and this makes on-device performance inherently unpredictable. Bigger models are often too slow, too “hot”, or too power-hungry. Smaller models may lack accuracy. Getting the right balance requires careful optimization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solving Android devs’ on-device problems
&lt;/h2&gt;

&lt;p&gt;The challenges described above are exactly what we built Embedl Hub to solve. Because these issues are ones we’ve encountered ourselves, we set out to create a tool that helps you identify which models perform well across devices, understand how they behave on different chipsets, optimize them for specific hardware targets, and verify the models on real Android devices in the cloud.&lt;/p&gt;

&lt;p&gt;At a high level, the platform lets you&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compile&lt;/strong&gt; your model for the correct runtime and accelerators on the target device, ensuring it can use the available hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize&lt;/strong&gt; your model to reduce latency, memory usage, and energy consumption, and to enable NPU acceleration on many modern chipsets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark&lt;/strong&gt; your model on real edge hardware in the cloud to measure and compare device-specific latency, memory use, and execution paths.
Embedl Hub logs your metrics, parameters, and benchmarks, and presents them in a web UI where you can inspect layer-level behavior, compare devices side by side, and reproduce every run. Our goal with this UI is to make it easy to confidently choose the best model–device combination before releasing your app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To showcase the platform we’ve built, we’ll demonstrate how it can be used to optimize and profile a model running on a Samsung Galaxy S24 mobile phone.&lt;/p&gt;

&lt;h4&gt;
  
  
  Compile the model
&lt;/h4&gt;

&lt;p&gt;Let’s say you want to run a MobileNetV2 model trained in PyTorch. First, export the model to ONNX and then compile it for the target runtime. In this case, we want to run it using LiteRT (TFLite).&lt;/p&gt;

&lt;p&gt;To &lt;a href="https://hub.embedl.com/docs/quickstart#compile-the-model-from-onnx-to-tflite/?utm_source=devto" rel="noopener noreferrer"&gt;compile&lt;/a&gt; it with the &lt;code&gt;embedl-hub CLI&lt;/code&gt;, you run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub compile \
    --model /path/to/mobilenet_v2.onnx \
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This step gives you an early indication of whether the model is actually compatible with the device’s chipset and execution paths, so you can catch the kinds of issues that usually only appear after launch, before users start leaving reviews.&lt;/p&gt;

&lt;h4&gt;
  
  
  Optimize the model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://hub.embedl.com/docs/quickstart#optional-quantize-the-model/?utm_source=devto" rel="noopener noreferrer"&gt;Quantization&lt;/a&gt; is an optional but highly recommended step that can drastically reduce inference latency and memory usage. On mobile and embedded hardware, most optimizations come from quantization: By lowering the numerical precision of weights and activations to lower numerical precision (such as INT8), the model becomes faster and more power-efficient. It is especially useful when deploying models to resource-constrained hardware such as mobile phones or embedded boards and is often required for NPU acceleration on modern Android devices.&lt;/p&gt;

&lt;p&gt;While this can reduce the model’s accuracy, you can minimize the loss by calibrating with a small sample dataset, typically just a few hundred examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub quantize \
    --model /path/to/mobilenet_v2.tflite \
    --data /path/to/dataset \
    --num-samples 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This feature directly addresses issues developers frequently encounter, such as inference failing due to unsupported ops. It also reduces memory use and battery consumption, and allows the model to run more efficiently on hardware that benefits from quantized execution, including NPUs and CPUs.&lt;/p&gt;

&lt;h4&gt;
  
  
  Benchmark the model on remote hardware
&lt;/h4&gt;

&lt;p&gt;Now that the model is compiled (and quantized), you can &lt;a href="https://hub.embedl.com/docs/quickstart#benchmark-the-model-on-remote-hardware" rel="noopener noreferrer"&gt;run it on real hardware&lt;/a&gt; directly through one of Embedl Hub’s integrated &lt;a href="https://hub.embedl.com/docs/remote-hardware-clouds/?utm_source=devto" rel="noopener noreferrer"&gt;device clouds&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub benchmark \
    --model /path/to/mobilenet_v2.quantized.tflite \
    --device "Samsung Galaxy S24"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where many of the earlier problems are finally made totally visible: The benchmark results reveal how the model behaves on real devices. With these results, you can quickly see which devices run the model well, which don’t, and decide how to adapt or further develop before releasing your app.&lt;/p&gt;

&lt;p&gt;In this example, we run the model on Samsung Galaxy S24. There are a large number of devices to choose from on Embedl Hub – Galaxy phones, Pixel phones, Snapdragon development boards – allowing you to test across the very diversity that makes Android deployment difficult. See &lt;a href="https://hub.embedl.com/docs/supported-devices/?utm_source=devto" rel="noopener noreferrer"&gt;supported devices&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Analyze &amp;amp; compare performance in the Web UI
&lt;/h4&gt;

&lt;p&gt;Benchmarking the model gives useful information such as the model’s latency on the hardware platform, which layers are slowest, the number of layers executed on each compute unit type, and more! We can use this information for debugging and for iterating on the model’s design. We can answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does my model behave across different chipsets?&lt;/li&gt;
&lt;li&gt;Can we optimize the slowest layer?&lt;/li&gt;
&lt;li&gt;Why aren’t certain layers executed on the correct compute unit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6eex8af3ihetqhjyyimx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6eex8af3ihetqhjyyimx.png" alt=" " width="800" height="369"&gt;&lt;/a&gt;&lt;br&gt;
This interface lets you verify model performance across many devices without repeating setup work, with all your on-device efforts gathered in one place.&lt;/p&gt;

&lt;p&gt;The visualizations in the dashboard make it easy to understand why a model behaves differently across chipsets, helping you systematically improve and optimize its performance for the hardware you target for. And by comparing multiple devices through our device cloud, you can confidently test and choose the best model–device combination before releasing your app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share your feedback
&lt;/h2&gt;

&lt;p&gt;Embedl Hub is still in beta, and we’d love to hear your feedback and which features or devices you’d like to see next, so we can continue solving the problems Android devs face when building on-device AI.&lt;/p&gt;

&lt;p&gt;Try it out at &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;hub.embedl.com&lt;/a&gt; and let us know what you think!&lt;/p&gt;

</description>
      <category>androiddev</category>
      <category>mobile</category>
      <category>mobiledev</category>
      <category>ai</category>
    </item>
    <item>
      <title>New post! New AI devtool that let you optimize, run and benchmark models on remote edge devices, no need for your own hardware. Learn more about how the platform can solve your local AI challenges in the post. Link to platform: https://hub.embedl.com/</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Sun, 09 Nov 2025 18:55:50 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/new-post-new-ai-devtool-that-let-you-optimize-run-and-benchmark-models-on-remote-edge-devices-no-3gn6</link>
      <guid>https://dev.to/elina_norling_embedl/new-post-new-ai-devtool-that-let-you-optimize-run-and-benchmark-models-on-remote-edge-devices-no-3gn6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/elina_norling_embedl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557597%2Fa31eb847-7acb-48ef-ae6f-fa1dd53d74f3.png" alt="elina_norling_embedl"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/elina_norling_embedl/devtool-for-running-and-benchmarking-local-ai-445e" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Devtool for running and benchmarking local AI&lt;/h2&gt;
      &lt;h3&gt;Elina Norling ・ Nov 9&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#embedded&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#deeplearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computervision&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://hub.embedl.com/" rel="noopener noreferrer"&gt;
      hub.embedl.com
    &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>embedded</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>Devtool for running and benchmarking local AI</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Sun, 09 Nov 2025 18:51:02 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/devtool-for-running-and-benchmarking-local-ai-445e</link>
      <guid>https://dev.to/elina_norling_embedl/devtool-for-running-and-benchmarking-local-ai-445e</guid>
      <description>&lt;p&gt;We’ve just created &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;Embedl Hub&lt;/a&gt;, a developer platform where you can experiment with on-device AI and analyze how models perform on real hardware. It allows you to optimize, benchmark, and compare models by running them on devices hosted in the cloud, so you don’t need access to physical hardware yourself.&lt;/p&gt;

&lt;p&gt;You can test performance across phones, dev boards, and SoCs directly from your Python environment or terminal. Everything is free to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of the Platform
&lt;/h2&gt;

&lt;p&gt;Optimize and deploy your model on any edge device with the Embedl Hub Python library:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quantize&lt;/strong&gt; your model for lower latency and memory usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compile&lt;/strong&gt; your model for execution on CPU, GPU, NPU or other AI accelerators on your target devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark&lt;/strong&gt; your model's latency and memory usage on real edge devices in the cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Embedl Hub logs your metrics, parameters, and benchmarks, allowing you to inspect and compare your results on the web and reproduce them later.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ve Built
&lt;/h2&gt;

&lt;p&gt;To showcase the platform we’ve built, we’ll demonstrate how it can be used to optimize and profile a model running on a Samsung Galaxy S24 mobile phone.&lt;/p&gt;

&lt;h4&gt;
  
  
  Compile the model
&lt;/h4&gt;

&lt;p&gt;Let’s say you want to run a MobileNetV2 model trained in PyTorch.&lt;br&gt;
First, export the model to ONNX and then compile it for the target runtime. In this case, we want to run it using LiteRT (TFLite). &lt;/p&gt;

&lt;p&gt;To compile it with the &lt;code&gt;embedl-hub&lt;/code&gt; CLI, you run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub compile \
    --model /path/to/mobilenet_v2_quantized.onnx \
    --size 1,3,224,224 \
    --device "Samsung Galaxy S24" \
    --runtime tflite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Quantize the model
&lt;/h4&gt;

&lt;p&gt;Quantization is an optional but highly recommended step that can drastically reduce inference latency and memory usage. It is especially useful when deploying models to resource-constrained hardware such as mobile phones or embedded boards. It works by lowering the numerical precision of weights and activations in the model.&lt;/p&gt;

&lt;p&gt;While this can reduce the model’s accuracy, you can minimize the loss by calibrating with a small sample dataset, typically just a few hundred examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub quantize \
    --model /path/to/mobilenet_v2.onnx \
    --data /path/to/dataset \
    --num-samples 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Benchmark the model on remote hardware
&lt;/h4&gt;

&lt;p&gt;Now that the model is compiled (and quantized), you can run it on real hardware directly through one of Embedl Hub's integrated device clouds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub benchmark \
    --model /path/to/mobilenet_v2_quantized.tflite \
    --device "Samsung Galaxy S24"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we run the model on Samsung Galaxy S24. There are a large number of devices to chose from on Embedl Hub, see supported devices &lt;a href="https://hub.embedl.com/docs/supported-devices/?utm_source=devto" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  Analyze &amp;amp; compare performance in the Web UI
&lt;/h4&gt;

&lt;p&gt;Benchmarking the model gives useful information such as the model’s latency on the hardware platform, which layers are slowest, the number of layers executed on each compute unit type, and more! We can use this information for advanced debugging and for iterating on the model’s design. We can answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can we optimize the slowest layer?&lt;/li&gt;
&lt;li&gt;Why aren’t certain layers executed on the correct compute unit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All data and artifacts are stored securely in your Embedl Hub account. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrqerni1tvbmica25bmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrqerni1tvbmica25bmm.png" alt="Embedl Hub web UI" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Share your feedback
&lt;/h4&gt;

&lt;p&gt;Embedl Hub is still in beta, and we’d love to hear your feedback   and what features or devices you’d like to see next.&lt;/p&gt;

&lt;p&gt;Try it out at &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;hub.embedl.com&lt;/a&gt;  and let us know what you think!&lt;/p&gt;

</description>
      <category>embedded</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>Question: How do you ensure consistent AI model performance across Android devices?</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Fri, 31 Oct 2025 13:35:02 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/how-do-you-ensure-consistent-ai-model-performance-across-android-devices-59p9</link>
      <guid>https://dev.to/elina_norling_embedl/how-do-you-ensure-consistent-ai-model-performance-across-android-devices-59p9</guid>
      <description>&lt;p&gt;For those of you building apps that include AI models that run on-device (e.g. vision models), how do you handle the issue of models performing differently across different CPUs, GPUs, and NPUs? I’ve heard several cases where a model works perfectly on some devices but fails to meet real-time requirements or doesn’t work at all on others.&lt;/p&gt;

&lt;p&gt;Do you usually deploy the same model across all devices? If so, how do you make it perform well on different accelerators and devices? Or do you switch models between devices to get better performance for each one? How do you decide which model works best for each type of device?&lt;/p&gt;

</description>
      <category>mobiledev</category>
      <category>android</category>
      <category>mobile</category>
      <category>ai</category>
    </item>
    <item>
      <title>New blogpost about layer wise PSNR: 
https://dev.to/embedl-hub/diagnosing-layer-sensitivity-during-post-training-quantization-115g</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Thu, 30 Oct 2025 17:34:54 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/new-blogpost-about-layer-wise-psnr-3mco</link>
      <guid>https://dev.to/elina_norling_embedl/new-blogpost-about-layer-wise-psnr-3mco</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/embedl-hub" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11742%2F3bbb11fe-76e9-4e9b-a2b3-16a0be7e7cb9.png" alt="Embedl Hub" width="500" height="500"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557597%2Fa31eb847-7acb-48ef-ae6f-fa1dd53d74f3.png" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/embedl-hub/diagnosing-layer-sensitivity-during-post-training-quantization-115g" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Diagnosing layer sensitivity during post training quantization&lt;/h2&gt;
      &lt;h3&gt;Elina Norling for Embedl Hub ・ Oct 30&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#deeplearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#embedded&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Diagnosing layer sensitivity during post training quantization</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Thu, 30 Oct 2025 10:51:03 +0000</pubDate>
      <link>https://dev.to/embedl-hub/diagnosing-layer-sensitivity-during-post-training-quantization-115g</link>
      <guid>https://dev.to/embedl-hub/diagnosing-layer-sensitivity-during-post-training-quantization-115g</guid>
      <description>&lt;p&gt;Quantization is an essential optimization technique to adapt a model to edge devices, realizing the hardware’s full potential. In practice, quantization refers to converting high-precision numerical types to lower-precision formats for both weights and activations. Most commonly, quantization converts 32-bit floating point (float32) to int8, often applied using post-training quantization (PTQ) where the model is quantized after training without requiring retraining. The result is a smaller and faster model on-device by cutting memory traffic up to 4× and enabling specialized int8 vector/NPU instructions with lower compute latency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoxczrsubqr5hvww9ews.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoxczrsubqr5hvww9ews.png" alt=" " width="649" height="233"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Quantization: Converting from float precision to int data format to increase computational efficiency.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;However, quantization decreases the model’s expressivity and can introduce errors in the computations performed during inference. This performance degradation is expected and almost inevitable, but its impact varies by model architecture and task, ranging from unnoticeable to completely breaking the model. Therefore, this model degradation must be identified and measured as early as possible in the development and deployment pipeline.&lt;/p&gt;

&lt;p&gt;In this blog post, we explain how to measure the degradation in practice and introduce a diagnostic toolset based on layer-wise peak signal-to-noise ratio (PSNR).&lt;/p&gt;
&lt;h2&gt;
  
  
  How to measure quality degradation for quantized models
&lt;/h2&gt;

&lt;p&gt;Several methods exist in practice and academic literature to estimate accuracy degradation after quantization. Even without accessing the complete, annotated dataset and a task-specific evaluation pipeline, you can still strongly indicate the degradation level by comparing intermediate tensors and outputs from the float (float32) and quantized (int8) graphs. You can conclude by investigating the model data stream before and after quantization.&lt;/p&gt;

&lt;p&gt;One metric that quantifies the difference between the original data stream and the quantized stream is “peak signal-to-noise ratio”, or PSNR for short. It captures how much a quantized tensor deviates from its original float counterpart, based on the mean squared error (MSE) between them. At Embedl Hub we calculate PSNR using the following formula:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnfu78zexohlchd2xeas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnfu78zexohlchd2xeas.png" alt=" " width="351" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;where we define the peak signal and MSE according to&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzbk0l21knq8lw8xczap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzbk0l21knq8lw8xczap.png" alt=" " width="742" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The MSE is calculated from the difference between the float (unquantized) and the quantized output tensors, whereas the peak signal is calculated from the float tensor T.&lt;/p&gt;
&lt;h3&gt;
  
  
  Model output
&lt;/h3&gt;

&lt;p&gt;Measuring PSNR on the model outputs, such as logits, is common and lightweight. A higher PSNR indicates closer alignment between the quantized and unquantized outputs, and values above 30 dB are generally considered sufficient for many use cases, such as image classification. However, tasks like regression, audio, or safety-critical systems may require higher PSNR (≥40 dB) to preserve numerical accuracy.&lt;/p&gt;

&lt;p&gt;However, output-level PSNR only captures the performance degradation of the model in its entirety after quantization. It doesn’t tell you where in the network the degradation occurs or why performance dropped more than expected after deployment. Instead, you need to go layer by layer to reach that level of detail. Understanding where degradation occurs makes it possible to debug quantization artifacts, tune calibration, or decide which operations to keep in float.&lt;/p&gt;
&lt;h3&gt;
  
  
  Diagnosing layers with Embedl hub
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hub.embedl.com/" rel="noopener noreferrer"&gt;Embedl hub&lt;/a&gt; computes PSNR for each layer output in the entire neural network. This lets you visualize how quantization error accumulates through the model and spot sudden drops that point to sensitive layers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feauhzbcntfwt3spfs5d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feauhzbcntfwt3spfs5d6.png" alt=" " width="622" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should expect a steady degradation as you go deeper into the network. This is because the quantization errors introduced in the first layers accumulate and propagate through the downstream layers. For this reason, the error can become significantly worse in particularly deep networks (e.g., Transformers, RNNs), which may require special measures such as mixed-precision.&lt;/p&gt;

&lt;p&gt;However, if a sudden drop in PSNR occurs at a specific point in the network, it strongly indicates that a particular layer or operation is sensitive to quantization. This typically happens when the quantization error exceeds the operation’s numerical tolerance, causing a local breakdown in representation. Such layers require extra care to be quantized appropriately, for example, finer calibration, per-channel quantization, or being excluded from quantization altogether.&lt;/p&gt;

&lt;p&gt;Here is an example from quantizing EfficientNet-B7, a rather deep CNN, where the PSNR degrades substantially inside the squeeze-and-excite blocks of the network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfadmpg5t4tfx4d3kg4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfadmpg5t4tfx4d3kg4r.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An example of a sensitive layer is the softmax layer, which relies on precise value distributions due to its exponential and normalization behavior. Even minor rounding errors in softmax amplify and lead to disproportionate shifts in output and degraded model performance. It is recommended to keep softmax layers at a higher precision (float16/float32) during quantization if possible.&lt;/p&gt;
&lt;h3&gt;
  
  
  Get started today
&lt;/h3&gt;

&lt;p&gt;Both output and layerwise PSNR are automatically calculated when you run a quantization job with the Embedl Hub Python library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub quantize \
   --model my_model.onnx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PSNR values are computed by comparing the outputs of the original (unquantized) ONNX model to those of the quantized model, layer by layer as well as for the final output. This provides a clear, quantitative measure of how much information is lost at each stage of the network due to quantization.&lt;/p&gt;

&lt;p&gt;Follow our &lt;a href="https://hub.embedl.com/docs/?utm_source=devto" rel="noopener noreferrer"&gt;getting started guides&lt;/a&gt; and start quantizing today!&lt;/p&gt;

&lt;h3&gt;
  
  
  Share your feedback
&lt;/h3&gt;

&lt;p&gt;Embedl Hub is still in beta, and we’d love to hear your feedback   and what features or devices you’d like to see next.&lt;/p&gt;

&lt;p&gt;Try it out at &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;hub.embedl.com&lt;/a&gt;  and let us know what you think!&lt;/p&gt;

</description>
      <category>deeplearning</category>
      <category>machinelearning</category>
      <category>ai</category>
      <category>embedded</category>
    </item>
    <item>
      <title>We’ve just launched Embedl Hub, a developer platform for experimenting with on-device AI. Run, benchmark, and compare models on real cloud-hosted hardware!</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Wed, 29 Oct 2025 08:24:17 +0000</pubDate>
      <link>https://dev.to/elina_norling_embedl/weve-just-launched-embedl-hub-a-developer-platform-for-experimenting-with-on-device-ai-run-5963</link>
      <guid>https://dev.to/elina_norling_embedl/weve-just-launched-embedl-hub-a-developer-platform-for-experimenting-with-on-device-ai-run-5963</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/embedl-hub" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11742%2F3bbb11fe-76e9-4e9b-a2b3-16a0be7e7cb9.png" alt="Embedl Hub" width="500" height="500"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557597%2Fa31eb847-7acb-48ef-ae6f-fa1dd53d74f3.png" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/embedl-hub/introducing-devtool-for-running-and-benchmarking-ai-on-device-4hi5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Introducing devtool for running and benchmarking AI on-device&lt;/h2&gt;
      &lt;h3&gt;Elina Norling for Embedl Hub ・ Oct 23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#android&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#deeplearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#computervision&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>android</category>
      <category>deeplearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>9 reasons why Edge AI development is so hard</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Mon, 27 Oct 2025 10:14:50 +0000</pubDate>
      <link>https://dev.to/embedl-hub/9-reasons-why-edge-ai-development-is-so-hard-48ma</link>
      <guid>https://dev.to/embedl-hub/9-reasons-why-edge-ai-development-is-so-hard-48ma</guid>
      <description>&lt;p&gt;Even though we’re a company specialized in Edge AI and most of our team spends their days building and deploying models to all kinds of devices – there’s no getting around the fact that all edge developers still run into recurring challenges on an almost daily basis. That’s why we decided to do a small in-house investigation to figure out what we can agree are the biggest challenges in or related to Edge AI development today. In this blog post, we present the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Real-time demands with limited compute
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges with the edge is that systems often need to meet real-time latency requirements. For example, it is not certain that an autonomous vehicle has time to send data back and forth to the cloud – decisions must be made immediately. At the same time, the computers on edge devices are tiny compared to data centers, which means the models must be extremely efficient.&lt;/p&gt;

&lt;p&gt;Running an inference can require billions of operations, which both takes time and consumes energy. This becomes a major challenge in embedded systems. Devices often lack of compute resources, operate under strict real-time requirements, and frequently run on battery. The combination makes the demands on optimization tougher than in almost any other environment. Even if you can clear the hurdle of getting a model to run, you might still be running into resource bottlenecks that make the model so slow that it’s useless.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. No universal target device
&lt;/h2&gt;

&lt;p&gt;The problem is also that hardware architectures vary greatly between devices, and there’s no one-size-fits-all for model and device pairing in this area. More specialized hardware may outclass a more general device for one type of model, yet utterly fail to compile and run another. ‘Faster’ is therefore not always faster. Furthermore, it is rarely a trivial task to determine why a model fails to run on a given device. This is where edge development differs significantly from cloud development. In the cloud, you can install virtually anything you want on your server. On a chip, the constraints are not only much stricter – it is often challenging to even get a model to run at all, because the hardware is so specific.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Device capabilities define which techniques work
&lt;/h2&gt;

&lt;p&gt;Since hardware architecture varies from device to device, the techniques to improve model performance are also device-dependent. For example, some devices support unstructured sparsity, leading to significant speedups without any loss in accuracy, while others gain no performance benefit at all from sparse calculations and become less accurate. Different quantization capabilities across devices also compound the problem of optimizing a model for a given hardware target.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Investing blindly in hardware
&lt;/h2&gt;

&lt;p&gt;Another frustrating part related to the fact that it isn’t obvious which model-hardware combo that will perform best – or at all – is that you might sometimes have to invest in hardware before knowing whether your model will actually run well on it. In theory, it’s possible to guess based on spec sheets or vendor claims – but in practice, the only reliable way to find out is to test. And testing is hard when you don’t have access to the device. This means many developers end up investing time – and sometimes money – on hardware that turns out to be a poor fit. Whatever the reason the model doesn’t run, you often don’t find out until late in the process. By then, you’ve already invested.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Full-stack knowledge is a prerequisite
&lt;/h2&gt;

&lt;p&gt;To build an AI application with excellent performance on an edge device, you not only have to consider the model’s architecture, but, as a consequence of the challenges mentioned above, also the resources available on the hardware, its specific architecture, and which compression and deployment techniques are allowed. As a result, this requires more low-level knowledge compared to running in the cloud. An edge developer needs to understand the entire stack: both software and hardware, and the various layers in between that translate a trained model into the actual code that runs on the target device.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. A multidisciplinary process by default
&lt;/h2&gt;

&lt;p&gt;This requirement for a holistic understanding also makes edge deployment inherently a multidisciplinary process. Successfully deploying models to edge hardware end-to-end may require contributions from software engineers, hardware specialists, researchers, data engineers, and network experts. When teams with such diverse expertise need to collaborate, the process becomes not only technically challenging but also organizationally complex. A common issue that arises when this alignment is missing is that developers do not always take the hardware into account when selecting a model. As a result, a model that looked promising during training may prove unsuitable for the target hardware, and once this becomes apparent, it is often difficult for an edge developer to remedy the situation.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Hardware support lags behind evolving AI
&lt;/h2&gt;

&lt;p&gt;The challenges in edge deployment are further compounded by the fact that we’re dealing with a very large and rapidly evolving problem space. AI development is advancing at incredible speed – new models are constantly being released, while hardware support is always playing catch up. Meanwhile, new hardware platforms are being introduced, but there is little consistency across these platforms in terms of support, compatibility, or efficiency. Porting a model from one hardware platform that runs it successfully to another hardware platform often feels like starting from zero all over again.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Poor documentation
&lt;/h2&gt;

&lt;p&gt;Additionally, we want to highlight that the field is evolving rapidly while still being in an early stage. Documentation in edge development is therefore often poor. For example, it is not always clear which version it refers to, or which flags can actually be combined. Error messages are often vague, making it difficult to understand exactly what went wrong when a model fails to compile.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Fragmented tooling
&lt;/h2&gt;

&lt;p&gt;Another consequence of the fact that edge AI is still not fully established compared to cloud AI is that tooling has long been fragmented, with no clear standards (as we have already touched upon). One major source of fragmentation is that there are multiple hardware vendors, and they all have their own inference tools and ecosystems. Furthermore, going from PyTorch to a working model on a phone or a development board often involves four to five different tools: PyTorch → ONNX → quantization tool → vendor-specific SDK → deployment code. These rarely work seamlessly together. You are expected to stitch everything together yourself, troubleshoot broken conversions, and still deliver something with low latency and high accuracy. It is not only time-consuming, it is also fragile. Every update of a tool risks breaking something further downstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying to make edge AI a little less painful
&lt;/h2&gt;

&lt;p&gt;Since we in the Embedl Hub team also recognize ourselves in these challenges, we’ve tried to build a platform that we believe can solve quite a few of them. We believe that – even if we might be biased – our current &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;BETA&lt;/a&gt; offers a solid solution for at least the issues related to fragmented tooling, poor documentation, and finding the most performant model-hardware combination. We offer a consistent &lt;a href="https://hub.embedl.com/docs/?utm_source=devto" rel="noopener noreferrer"&gt;workflow&lt;/a&gt; that combines model optimization, quantization, compilation, and benchmarking in one unified Python library that’s connected to a web UI where everything is saved and can be compared in one place. We’ve also built a &lt;a href="https://hub.embedl.com/docs/remote-hardware-clouds" rel="noopener noreferrer"&gt;remote device cloud&lt;/a&gt; where you can test models and techniques on real hardware – directly and without even needing access to the devices yourself – making it easier to quickly find the right hardware-model combination without you having to take chances on which hardware to invest in. In our &lt;a href="https://hub.embedl.com/docs/benchmarks/?utm_source=devto" rel="noopener noreferrer"&gt;benchmark suite&lt;/a&gt;, there are also ready-made benchmarks to browse and explore.&lt;/p&gt;

&lt;p&gt;Even if it’s hard to cover everything in one single tool, our hope is that our &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;Hub&lt;/a&gt; will make Edge AI development smoother, and even though the field is evolving fast, the Hub can help create better conditions to keep up.&lt;/p&gt;

&lt;p&gt;Do you miss something else on our platform to make your Edge development easier? We are super-curious! Please get in touch with us here or write to us on &lt;a href="https://embedl-hub.slack.com/join/shared_invite/zt-2y87a2s4x-E7LSbKH50HDgyOUiPq84tA#/shared-invite/email" rel="noopener noreferrer"&gt;slack&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>embedded</category>
      <category>machinelearning</category>
      <category>iot</category>
    </item>
    <item>
      <title>Introducing devtool for running and benchmarking AI on-device</title>
      <dc:creator>Elina Norling</dc:creator>
      <pubDate>Thu, 23 Oct 2025 14:38:54 +0000</pubDate>
      <link>https://dev.to/embedl-hub/introducing-devtool-for-running-and-benchmarking-ai-on-device-4hi5</link>
      <guid>https://dev.to/embedl-hub/introducing-devtool-for-running-and-benchmarking-ai-on-device-4hi5</guid>
      <description>&lt;p&gt;We’ve just created &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;Embedl Hub&lt;/a&gt;, a developer platform where you can experiment with on-device AI and analyze how models perform on real hardware. It allows you to optimize, benchmark, and compare models by running them on devices hosted in the cloud, so you don’t need access to physical hardware yourself.&lt;/p&gt;

&lt;p&gt;You can test performance across phones, dev boards, and SoCs directly from your Python environment or terminal. Everything is free to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of the Platform
&lt;/h2&gt;

&lt;p&gt;Optimize and deploy your model on any edge device with the Embedl Hub Python library:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quantize&lt;/strong&gt; your model for lower latency and memory usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compile&lt;/strong&gt; your model for execution on CPU, GPU, NPU or other AI accelerators on your target devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark&lt;/strong&gt; your model's latency and memory usage on real edge devices in the cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Embedl Hub logs your metrics, parameters, and benchmarks, allowing you to inspect and compare your results on the web and reproduce them later.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ve Built
&lt;/h2&gt;

&lt;p&gt;To showcase the platform we’ve built, we’ll demonstrate how it can be used to optimize and profile a model running on a Samsung Galaxy S24 mobile phone.&lt;/p&gt;

&lt;h4&gt;
  
  
  Compile the model
&lt;/h4&gt;

&lt;p&gt;Let’s say you want to run a MobileNetV2 model trained in PyTorch.&lt;br&gt;
First, export the model to ONNX and then compile it for the target runtime. In this case, we want to run it using LiteRT (TFLite). &lt;/p&gt;

&lt;p&gt;To compile it with the &lt;code&gt;embedl-hub&lt;/code&gt; CLI, you run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub compile \
    --model /path/to/mobilenet_v2_quantized.onnx \
    --size 1,3,224,224 \
    --device "Samsung Galaxy S24" \
    --runtime tflite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Quantize the model
&lt;/h4&gt;

&lt;p&gt;Quantization is an optional but highly recommended step that can drastically reduce inference latency and memory usage. It is especially useful when deploying models to resource-constrained hardware such as mobile phones or embedded boards. It works by lowering the numerical precision of weights and activations in the model.&lt;/p&gt;

&lt;p&gt;While this can reduce the model’s accuracy, you can minimize the loss by calibrating with a small sample dataset, typically just a few hundred examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub quantize \
    --model /path/to/mobilenet_v2.onnx \
    --data /path/to/dataset \
    --num-samples 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Benchmark the model on remote hardware
&lt;/h4&gt;

&lt;p&gt;Now that the model is compiled (and quantized), you can run it on real hardware directly through one of Embedl Hub's integrated device clouds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;embedl-hub benchmark \
    --model /path/to/mobilenet_v2_quantized.tflite \
    --device "Samsung Galaxy S24"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we run the model on Samsung Galaxy S24. There are a large number of devices to chose from on Embedl Hub, see supported devices &lt;a href="https://hub.embedl.com/docs/supported-devices/?utm_source=devto" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  Analyze &amp;amp; compare performance in the Web UI
&lt;/h4&gt;

&lt;p&gt;Benchmarking the model gives useful information such as the model’s latency on the hardware platform, which layers are slowest, the number of layers executed on each compute unit type, and more! We can use this information for advanced debugging and for iterating on the model’s design. We can answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can we optimize the slowest layer?&lt;/li&gt;
&lt;li&gt;Why aren’t certain layers executed on the correct compute unit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All data and artifacts are stored securely in your Embedl Hub account. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrqerni1tvbmica25bmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrqerni1tvbmica25bmm.png" alt="Embedl Hub web UI" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Share your feedback
&lt;/h4&gt;

&lt;p&gt;Embedl Hub is still in beta, and we’d love to hear your feedback   and what features or devices you’d like to see next.&lt;/p&gt;

&lt;p&gt;Try it out at &lt;a href="https://hub.embedl.com/?utm_source=devto" rel="noopener noreferrer"&gt;hub.embedl.com&lt;/a&gt;  and let us know what you think!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>android</category>
      <category>deeplearning</category>
      <category>computervision</category>
    </item>
  </channel>
</rss>
