Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GPU Tweaking & Power Control with LACT

Featured Replies

TLDR: GPU Power Management/FanControl/Frequency now much easier with LACT docker.

Background: I recently put a 3090 into my Unraid box to run Ollama LLM's. Whilst everything ran as expected, the idle power draw was running between 30-35w, which if you live in the UK is a non trivial cost. So I set about figuring out how to lower it. After hunting around the internet reading various posts/guides, I managed to prove that I could undervolt the card by setting offsets, and reduced the idle consumption to 15-19w without any impact.

However, the process to achieve this in unraid is not ideal and was extensively manual.

Whilst looking for a better way I found that the LACT project had recently released a docker container, which has enables an automated and stable way of undervolting the GPU without needing xorg sessions/vms/ etc.

I thought it might be useful for people to know how I got it all working for future reference, as I could not find any info about using LACT in Unraid.

I am not going to go into what values you need to set for your GPU etc or how to use LACT in detail, I am just laying out the basics and will use my config/setup as an example for others to build on...

To be clear the settings I am using are for Nvidia 3090 and will be different for other GPU's and different Vendors - do your own research first!! - I do not know what is needed for AMD & Intel GPU's but they are supported by LACT according to the documentation.

Also I do not use the GPU in any VM's.

Plugins Used:

Nvidia

User Scripts

GPU Statistics (to see results of tweaks etc)

My Initial Setup:

- I already had installed Nvidia Unraid Plugin and proved it was working in docker by setting up Ollama.

- I have the following user script scheduled to be run "At First Array Start Only"

#!/bin/bash

nvidia-smi --persistence-mode=ENABLED

Make sure nothing is using the GPU before proceeding.

LACT (https://github.com/ilya-zlobintsev/LACT) docker config:

- Name: LACT

- Repository: ghcr.io/ilya-zlobintsev/lact:master

- Extra Parameters: --runtime=nvidia --gpus=all --pid=host

- Privileged: ON

- NVIDIA_VISIBLE_DEVICES: [your GPU ID from the NVIDA PLUGIN]

- NVIDIA_DRIVER_CAPABILITIES: all

- (path) Host:/dev/dri Container:/dev/dri

- (path) Host:/mnt/user/appdata/lact Container:/etc/lact

Once running go into the console of the container and enter lact cli info.

If everything is configured correctly you should see a GPU ID and hardware info.

If not then check your GPU docker settings, or type nvidia-smi in the LACT console - if you do not get a response then your docker is not configured/working with your GPU..

You will need the GPU ID for configuration.

Exit the console & Set the Container to autostart.

NOTE: You will see some startup errors in the LACT log file, as far as I can tell this is normal and expected with this configuration.

Launch an Unraid terminal window and enter docker exec LACT lact cli info. This should give the same info as before and confirms you can issue commands to LACT directly if needed.

Open the logs window from the LACT docker so you can see realtime updates.

Now edit the config.yaml in the /mnt/user/appdata/lact directory.

My config is provided below as reference (the GPU ID is the one reported from the "lact cli info" command). I have only setup the Default config as I do not need multiple profiles or any fan control settings - see the LACT config guide for more detailed info about setting for your setup.

version: 5

daemon:

log_level: debug

admin_group: sudo

disable_clocks_cleanup: false

apply_settings_timer: 5

gpus:

10DE:2204-1569:F278-0000:01:00.0:

fan_control_enabled: false

gpu_clock_offsets:

0: 150

2: 150

3: 150

5: 150

8: 150

mem_clock_offsets:

0: 1700

2: 1700

3: 1700

5: 1700

8: 1700

auto_switch_profiles: false

Once you save the YAML, LACT will auto reload and apply the settings (if you have configured it correctly). Check the log.

If everything goes according to plan you should see some changes in GPU Statistics etc.

That is everything to get LACT working on your system in a docker.

---

I established that for 3090/4090 the cards do not go into suspend correctly which is required for the idle power to drop, so to combat this I took @SpaceInvaderOne nvida power management script and changed it so that it will check for running docker processes on the GPU and if none are found it will re-apply the LACT default config the suspend and resume the GPU, triggering the lower power values. I run this script every 15 mins.

Hopefully this post proves useful for others in the future -*

image.png

modified nvidia power management.sh

Edited by Minty Trebor
typos - added tldr

  • Minty Trebor changed the title to GPU Tweaking & Power Control with LACT
  • 1 month later...

Interesting settings. I was just preparing to use you post but i get only 4W (declared) just by using @SpaceInvaderOne script on my 4090. Anyway i saved you post "just in case". You never know. Cheers&Thx!

image.png

Using repeatedly Ollama and other GPU intensive apps seems he likes to park at 12W. It goes to 4W only after restart and no GPU use.

Edited by mokopoko

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.