Tech Project: AI miniPC (Minisforum X1 Pro) 3.0

Real life likes to throw all sorts of challenges in our way.

For a good amount of time, I couldn't update the site due to a problem with Publii's Git repo uploading... A setting that I only used because the Publii team announced plans to depreciate Github Pages upload support. Ironically enough, they shelved those plans, but hadn't told the userbase, so I was stuck on the flawed method until I did a big of digging in the Publii Github Repo's Issues sections.

Then the X1 Pro got stuck in a Bluescreen of Death (BSoD) loop, which forced me to pull the miniPC apart to get to the SSD. Thankfully, the data on the drive was fine, but I decided to completely reinstall Windows 11 Pro.

Table of Contents

Moral of the Story: Use Snappy Driver Installer

After backing up the data and reinstalling Windows 11 by wiping the old partition, I decided to do one major change to my process. After installing the WiFi driver, I decided to download Snappy Driver Installer (SDI).

SDI is a freeware application that downloads selected collections of drivers, curated by the application's developer, and installs them on the target system. This software's existence is basically down to a few things:

  1. Windows qualified drivers are often months out of date.
  2. Most hardware vendors don't seem to push all updated drivers to Microsoft for qualification.
  3. Most people don't know how to dump the specific hardware info required to search for drivers online.
  4. Hardware vendors often make it hard to find the latest drivers.

The result of using SDI was roughly 3.3GB of driver pack downloads, which is quite a large amount of data. However, since graphics drivers for AMD systems are roughly a 1GB on their own, this was not too surprising. The drivers automatically installed after this.

Several days later, after mostly stable performance, I updated to the latest AMD graphics drivers, which included NPU driver updates. My issues went from "the PC cannot sleep with a USB SATA connector plugged in" to a whole host of BSoDs due to issues like DRIVER_POWER_STATE and DPC_WATCHDOG_VIOLATION. This was extra concerning because the latter was what caused me to reinstall Windows, plus I had properly uninstalled my graphics driver with Display Driver Uninstaller before updating.

Eventually, after attempting to disable Sleep through Registry edits and PowerShell commands, I downloaded the WinDBG tool, as Windows Event Viewer indicated there were crash logs to examine. Using the tool, I was able to discover the following data:

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an IRP for too long a time
Arg2: ffffd606cf659060, Physical Device Object of the stack
Arg3: ffffb3842678f000, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffd606febbecf0, The blocked IRP

Debugging Details:
------------------

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 1968

    Key  : Analysis.Elapsed.mSec
    Value: 15178

    Key  : Analysis.IO.Other.Mb
    Value: 0

    Key  : Analysis.IO.Read.Mb
    Value: 1

    Key  : Analysis.IO.Write.Mb
    Value: 50

    Key  : Analysis.Init.CPU.mSec
    Value: 4796

    Key  : Analysis.Init.Elapsed.mSec
    Value: 134050

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 118

    Key  : Analysis.Version.DbgEng
    Value: 10.0.27871.1001

    Key  : Analysis.Version.Description
    Value: 10.2505.01.02 amd64fre

    Key  : Analysis.Version.Ext
    Value: 1.2505.1.2

    Key  : Bugcheck.Code.LegacyAPI
    Value: 0x9f

    Key  : Bugcheck.Code.TargetModel
    Value: 0x9f

    Key  : Dump.Attributes.AsUlong
    Value: 0x21808

    Key  : Dump.Attributes.DiagDataWrittenToHeader
    Value: 1

    Key  : Dump.Attributes.ErrorCode
    Value: 0x0

    Key  : Dump.Attributes.KernelGeneratedTriageDump
    Value: 1

    Key  : Dump.Attributes.LastLine
    Value: Dump completed successfully.

    Key  : Dump.Attributes.ProgressPercentage
    Value: 0

    Key  : Failure.Bucket
    Value: 0x9F_3_amdhdaudbus_IMAGE_pci.sys

    Key  : Failure.Hash
    Value: {db5298f0-84e4-933f-a991-f2a6273df4be}

    Key  : Hypervisor.Enlightenments.ValueHex
    Value: 0x7497cf94

    Key  : Hypervisor.Flags.AnyHypervisorPresent
    Value: 1

    Key  : Hypervisor.Flags.ApicEnlightened
    Value: 1

    Key  : Hypervisor.Flags.ApicVirtualizationAvailable
    Value: 0

    Key  : Hypervisor.Flags.AsyncMemoryHint
    Value: 0

    Key  : Hypervisor.Flags.CoreSchedulerRequested
    Value: 0

    Key  : Hypervisor.Flags.CpuManager
    Value: 1

    Key  : Hypervisor.Flags.DeprecateAutoEoi
    Value: 0

    Key  : Hypervisor.Flags.DynamicCpuDisabled
    Value: 1

    Key  : Hypervisor.Flags.Epf
    Value: 0

    Key  : Hypervisor.Flags.ExtendedProcessorMasks
    Value: 1

    Key  : Hypervisor.Flags.HardwareMbecAvailable
    Value: 1

    Key  : Hypervisor.Flags.MaxBankNumber
    Value: 0

    Key  : Hypervisor.Flags.MemoryZeroingControl
    Value: 0

    Key  : Hypervisor.Flags.NoExtendedRangeFlush
    Value: 0

    Key  : Hypervisor.Flags.NoNonArchCoreSharing
    Value: 1

    Key  : Hypervisor.Flags.Phase0InitDone
    Value: 1

    Key  : Hypervisor.Flags.PowerSchedulerQos
    Value: 0

    Key  : Hypervisor.Flags.RootScheduler
    Value: 0

    Key  : Hypervisor.Flags.SynicAvailable
    Value: 1

    Key  : Hypervisor.Flags.UseQpcBias
    Value: 0

    Key  : Hypervisor.Flags.Value
    Value: 38408431

    Key  : Hypervisor.Flags.ValueHex
    Value: 0x24a10ef

    Key  : Hypervisor.Flags.VpAssistPage
    Value: 1

    Key  : Hypervisor.Flags.VsmAvailable
    Value: 1

    Key  : Hypervisor.RootFlags.AccessStats
    Value: 1

    Key  : Hypervisor.RootFlags.CrashdumpEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.CreateVirtualProcessor
    Value: 1

    Key  : Hypervisor.RootFlags.DisableHyperthreading
    Value: 0

    Key  : Hypervisor.RootFlags.HostTimelineSync
    Value: 1

    Key  : Hypervisor.RootFlags.HypervisorDebuggingEnabled
    Value: 0

    Key  : Hypervisor.RootFlags.IsHyperV
    Value: 1

    Key  : Hypervisor.RootFlags.LivedumpEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.MapDeviceInterrupt
    Value: 1

    Key  : Hypervisor.RootFlags.MceEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.Nested
    Value: 0

    Key  : Hypervisor.RootFlags.StartLogicalProcessor
    Value: 1

    Key  : Hypervisor.RootFlags.Value
    Value: 1015

    Key  : Hypervisor.RootFlags.ValueHex
    Value: 0x3f7

BUGCHECK_CODE:  9f

BUGCHECK_P1: 3

BUGCHECK_P2: ffffd606cf659060

BUGCHECK_P3: ffffb3842678f000

BUGCHECK_P4: ffffd606febbecf0

FILE_IN_CAB:  091125-28468-01.dmp

TAG_NOT_DEFINED_202b:  *** Unknown TAG in analysis list 202b

DUMP_FILE_ATTRIBUTES: 0x21808
  Kernel Generated Triage Dump

FAULTING_THREAD:  ffffd606c36c0280

DRVPOWERSTATE_SUBCODE:  3

IMAGE_NAME:  pci.sys

MODULE_NAME: pci

FAULTING_MODULE: fffff8005b640000 pci

BLACKBOXBSD: 1 (!blackboxbsd)

BLACKBOXNTFS: 1 (!blackboxntfs)

BLACKBOXPNP: 1 (!blackboxpnp)

BLACKBOXWINLOGON: 1

CUSTOMER_CRASH_COUNT:  1

PROCESS_NAME:  System

STACK_TEXT:  
ffffb384`2678efa8 fffff800`c930e01d     : 00000000`0000009f 00000000`00000003 ffffd606`cf659060 ffffb384`2678f000 : nt!KeBugCheckEx
ffffb384`2678efb0 fffff800`c930de1c     : 00000000`00000001 ffffb384`2678f3e0 00000000`00000000 ffffb384`2678f189 : nt!PopIrpWatchdogBugcheck+0x1f5
ffffb384`2678f090 fffff800`c8fbd4c2     : ffffb481`0fb91180 fffff800`c9126aff ffffb384`2678f3e8 fffff800`c9126a08 : nt!PopIrpWatchdog+0xc
ffffb384`2678f0c0 fffff800`c8fbdda5     : 00000006`e4e5357c 00000000`0000000f 00000006`eb3db122 ffffb481`0fb91180 : nt!KiProcessExpiredTimerList+0x502
ffffb384`2678f1f0 fffff800`c8f4c805     : 00000000`00000000 00000000`00000000 ffffb481`0fb91180 ffffd606`c36c0280 : nt!KiTimerExpiration+0x2b5
ffffb384`2678f330 fffff800`c93e564e     : ffffb481`0fb91180 ffffb481`0fb91180 00000000`00000000 00000000`00000000 : nt!KiRetireDpcList+0xc45
ffffb384`2678f5c0 00000000`00000000     : ffffb384`26790000 ffffb384`26789000 00000000`00000000 00000000`00000000 : nt!KiIdleLoop+0x9e

IMAGE_VERSION:  10.0.26100.4768

STACK_COMMAND: .process /r /p 0xfffff800c9d0ef80; .thread 0xffffd606c36c0280 ; kb

FAILURE_BUCKET_ID:  0x9F_3_amdhdaudbus_IMAGE_pci.sys

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {db5298f0-84e4-933f-a991-f2a6273df4be}

Followup:     MachineOwner
---------

11: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an IRP for too long a time
Arg2: ffffd606cf659060, Physical Device Object of the stack
Arg3: ffffb3842678f000, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffd606febbecf0, The blocked IRP

Debugging Details:
------------------

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 984

    Key  : Analysis.Elapsed.mSec
    Value: 982

    Key  : Analysis.IO.Other.Mb
    Value: 0

    Key  : Analysis.IO.Read.Mb
    Value: 1

    Key  : Analysis.IO.Write.Mb
    Value: 50

    Key  : Analysis.Init.CPU.mSec
    Value: 6796

    Key  : Analysis.Init.Elapsed.mSec
    Value: 149264

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 118

    Key  : Analysis.Version.DbgEng
    Value: 10.0.27871.1001

    Key  : Analysis.Version.Description
    Value: 10.2505.01.02 amd64fre

    Key  : Analysis.Version.Ext
    Value: 1.2505.1.2

    Key  : Bugcheck.Code.LegacyAPI
    Value: 0x9f

    Key  : Bugcheck.Code.TargetModel
    Value: 0x9f

    Key  : Dump.Attributes.AsUlong
    Value: 0x21808

    Key  : Dump.Attributes.DiagDataWrittenToHeader
    Value: 1

    Key  : Dump.Attributes.ErrorCode
    Value: 0x0

    Key  : Dump.Attributes.KernelGeneratedTriageDump
    Value: 1

    Key  : Dump.Attributes.LastLine
    Value: Dump completed successfully.

    Key  : Dump.Attributes.ProgressPercentage
    Value: 0

    Key  : Failure.Bucket
    Value: 0x9F_3_amdhdaudbus_IMAGE_pci.sys

    Key  : Failure.Hash
    Value: {db5298f0-84e4-933f-a991-f2a6273df4be}

    Key  : Hypervisor.Enlightenments.ValueHex
    Value: 0x7497cf94

    Key  : Hypervisor.Flags.AnyHypervisorPresent
    Value: 1

    Key  : Hypervisor.Flags.ApicEnlightened
    Value: 1

    Key  : Hypervisor.Flags.ApicVirtualizationAvailable
    Value: 0

    Key  : Hypervisor.Flags.AsyncMemoryHint
    Value: 0

    Key  : Hypervisor.Flags.CoreSchedulerRequested
    Value: 0

    Key  : Hypervisor.Flags.CpuManager
    Value: 1

    Key  : Hypervisor.Flags.DeprecateAutoEoi
    Value: 0

    Key  : Hypervisor.Flags.DynamicCpuDisabled
    Value: 1

    Key  : Hypervisor.Flags.Epf
    Value: 0

    Key  : Hypervisor.Flags.ExtendedProcessorMasks
    Value: 1

    Key  : Hypervisor.Flags.HardwareMbecAvailable
    Value: 1

    Key  : Hypervisor.Flags.MaxBankNumber
    Value: 0

    Key  : Hypervisor.Flags.MemoryZeroingControl
    Value: 0

    Key  : Hypervisor.Flags.NoExtendedRangeFlush
    Value: 0

    Key  : Hypervisor.Flags.NoNonArchCoreSharing
    Value: 1

    Key  : Hypervisor.Flags.Phase0InitDone
    Value: 1

    Key  : Hypervisor.Flags.PowerSchedulerQos
    Value: 0

    Key  : Hypervisor.Flags.RootScheduler
    Value: 0

    Key  : Hypervisor.Flags.SynicAvailable
    Value: 1

    Key  : Hypervisor.Flags.UseQpcBias
    Value: 0

    Key  : Hypervisor.Flags.Value
    Value: 38408431

    Key  : Hypervisor.Flags.ValueHex
    Value: 0x24a10ef

    Key  : Hypervisor.Flags.VpAssistPage
    Value: 1

    Key  : Hypervisor.Flags.VsmAvailable
    Value: 1

    Key  : Hypervisor.RootFlags.AccessStats
    Value: 1

    Key  : Hypervisor.RootFlags.CrashdumpEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.CreateVirtualProcessor
    Value: 1

    Key  : Hypervisor.RootFlags.DisableHyperthreading
    Value: 0

    Key  : Hypervisor.RootFlags.HostTimelineSync
    Value: 1

    Key  : Hypervisor.RootFlags.HypervisorDebuggingEnabled
    Value: 0

    Key  : Hypervisor.RootFlags.IsHyperV
    Value: 1

    Key  : Hypervisor.RootFlags.LivedumpEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.MapDeviceInterrupt
    Value: 1

    Key  : Hypervisor.RootFlags.MceEnlightened
    Value: 1

    Key  : Hypervisor.RootFlags.Nested
    Value: 0

    Key  : Hypervisor.RootFlags.StartLogicalProcessor
    Value: 1

    Key  : Hypervisor.RootFlags.Value
    Value: 1015

    Key  : Hypervisor.RootFlags.ValueHex
    Value: 0x3f7

BUGCHECK_CODE:  9f

BUGCHECK_P1: 3

BUGCHECK_P2: ffffd606cf659060

BUGCHECK_P3: ffffb3842678f000

BUGCHECK_P4: ffffd606febbecf0

FILE_IN_CAB:  091125-28468-01.dmp

TAG_NOT_DEFINED_202b:  *** Unknown TAG in analysis list 202b

DUMP_FILE_ATTRIBUTES: 0x21808
  Kernel Generated Triage Dump

FAULTING_THREAD:  ffffd606c36c0280

DRVPOWERSTATE_SUBCODE:  3

IMAGE_NAME:  pci.sys

MODULE_NAME: pci

FAULTING_MODULE: fffff8005b640000 pci

BLACKBOXBSD: 1 (!blackboxbsd)

BLACKBOXNTFS: 1 (!blackboxntfs)

BLACKBOXPNP: 1 (!blackboxpnp)

BLACKBOXWINLOGON: 1

CUSTOMER_CRASH_COUNT:  1

PROCESS_NAME:  System

STACK_TEXT:  
ffffb384`2678efa8 fffff800`c930e01d     : 00000000`0000009f 00000000`00000003 ffffd606`cf659060 ffffb384`2678f000 : nt!KeBugCheckEx
ffffb384`2678efb0 fffff800`c930de1c     : 00000000`00000001 ffffb384`2678f3e0 00000000`00000000 ffffb384`2678f189 : nt!PopIrpWatchdogBugcheck+0x1f5
ffffb384`2678f090 fffff800`c8fbd4c2     : ffffb481`0fb91180 fffff800`c9126aff ffffb384`2678f3e8 fffff800`c9126a08 : nt!PopIrpWatchdog+0xc
ffffb384`2678f0c0 fffff800`c8fbdda5     : 00000006`e4e5357c 00000000`0000000f 00000006`eb3db122 ffffb481`0fb91180 : nt!KiProcessExpiredTimerList+0x502
ffffb384`2678f1f0 fffff800`c8f4c805     : 00000000`00000000 00000000`00000000 ffffb481`0fb91180 ffffd606`c36c0280 : nt!KiTimerExpiration+0x2b5
ffffb384`2678f330 fffff800`c93e564e     : ffffb481`0fb91180 ffffb481`0fb91180 00000000`00000000 00000000`00000000 : nt!KiRetireDpcList+0xc45
ffffb384`2678f5c0 00000000`00000000     : ffffb384`26790000 ffffb384`26789000 00000000`00000000 00000000`00000000 : nt!KiIdleLoop+0x9e


IMAGE_VERSION:  10.0.26100.4768

STACK_COMMAND: .process /r /p 0xfffff800c9d0ef80; .thread 0xffffd606c36c0280 ; kb

FAILURE_BUCKET_ID:  0x9F_3_amdhdaudbus_IMAGE_pci.sys

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {db5298f0-84e4-933f-a991-f2a6273df4be}

Followup:     MachineOwner
---------

As a result, I downloaded Driver Store Explorer and uninstalled the AMD HD Audio driver.

Curiously, it seems like Snappy Driver Installer might have corrupted the download of the AMD HD Audio Driver, which means said driver might have been missed by Display Driver Uninstaller. Or it could mean there's some kind of issue with installing it on certain systems.

Testing Hybrid Models

One of the purposes of purchasing an HX370 based miniPC was testing NPUs. The first few iterations of Lemonade Server I tried had issues with missing dependencies, but by the time I had to reinstall Windows 11 Pro, those were resolved. 

As a handy test, I returned to an older version of prompting for a revised wpa_supplicant script. This was because, at the time, I could not use VS Code POML extension to send the prompt to the LLM. Instead, I chose to use AnythingLLM as the UI, since it would retain a copy of the output.

I opted to use the provided DeepSeek R1 NPU operation model from AMD, for one simple reason. Converting a model to the ONNX format used by the hybrid and NPU models is incredibly annoying. It not only requires decent hardware to accomplish in the first place, but also requires extra layers of software to configure.

Start up of load on NPU during prompt execution.

Oddly, the NPU's utilization topped out at around 60% of the total compute capacity.

AnythingLLM during DeepSeek R1 hybrid NPU/GPU test.

One thing that was surprising was the slow pace of generation in AnythingLLM. While some amount of slowdown in text generation shows up from time to time with GPU LLM tasks, the NPU only run was consistently slow. It would take several seconds to generate a full word.

Mid-NPU only inferencing run, showing sudden drops in NPU utilization.

Also interesting was the NPU utilization, which dropped from 60% to 50% over the course of response generation. Oddly, every so often, there would be a massive dip to 0% utilization, before spiking to a higher level, which may had something to do with how perceptibly slow text generation was.

NPU and GPU usage at start of prompt response in hybrid mode.

Testing the same prompt with a hybrid model (NPU + GPU) operation produced a highly unusual and potentially troubling result. The NPU's utilization briefly spiked very early in the task, before the GPU rose to 90+% utilization.

According to the Lemonade Server FAQ, this is expected behavior:

2. I loaded a hybrid model, but the NPU is barely active. Is that expected?

Yes. In hybrid mode:

  • The NPU handles prompt processing.
  • The GPU handles token generation.
  • If your prompt is short, the NPU finishes quickly. Try a longer prompt to see more NPU activity.

This is problematic for a simple reason: if the NPU is doing one thing really fast during hybrid mode, it has effectively no value, because it's not doing anything through 99.999+% of the run. The HX370 has a theoretical maximum AI performance of 80 TOPS... but that value is based on the combination of NPU and GPU.

If AMD can't fully leverage having an NPU and GPU by assigning different parts of the inferencing work to the most capable hardware, there's no real value in having the NPU.

Perhaps ROCm 7 on Windows will allow better use of the NPU, but at the moment, its only utility is as a method of running LLMs while your GPU is occupied with other work.

Qwen3-TNG

Once I had the initial reinstall complete, I decided to rebuild my set of local AI models after testing the NPU. A number of Qwen3 finetunes from DavidAU released, using scripts from Star Trek episodes to finetune the model. Since I have some casual Star Trek knowledge, I decided to give it a try. I was curious to see what the quality of the results would be, since a Retrieval Augmented Generation (RAG) system could potentially do the same thing.

Here is the prompt I came up, using a previously created POML template for generating story scenes as a base:

<poml>
<runtime
      temperature="1" 
      maxTokens="0" 
      model="user.Qwen3-TNG"
      topP="0.8" />
<role>
You are an expert writer, master of all storytelling genres and styles. You double check every word to ensure precision and maximum impact on the reader. You triple check the details of story progression to ensure consistency in the plot, setting, and characters. If you are ever uncertain about something, put it in between #lt; and #gt; to let your editor know it needs examination.
</role>
<cp caption="Creative Interpretation Guidelines">
  <list>
    <item>Fill in gaps with imaginative details that align with the foundational elements.</item>
    <item>Maintain consistency with the established backstory, characters, and overall setting.</item>
    <item>Write everything in third person perspctive and past tense.</item>
    <item>Scene length: 500 words.</item>
  </list>
</cp>
<cp caption="Scene Header">
  <list>
    <item>Scene Title/Identifier: Transporter Room Confrontation</item>
  </list>
</cp>
<cp caption="Characters Present">
  <list>
    <item>Lieutenant Commander Geordi La Forge</item>
    <item>Lieutenant Commander Data</item>
    <item>Lynn Jore, humanoid female</item>
  </list>
</cp>
<cp caption="Specific Location">
  <list>
    <item>USS Enterprise-D</item>
    <item>Transporter Room</item>
  </list>
</cp>
<cp caption="Actions and Key Events">
  <list>
    <item>La Forge and Data race to the transporter room with phasers in hand</item>
    <item>Lynn Jore is standing on the transporter pad holding a case full of stolen isolinear chips</item>
    <item>La Forge and Data enter and tell her to put down the case</item>
    <item>Data informs her the transporter has been disabled</item>
    <item>La Forge goes to the transporter console and discovers the operator is only unconscious</item>
    <item>Jore puts down the case and asks how they caught her</item>
    <item>La Forge taps his comm badge and tells Worf the room is secure</item>
    <item>Data explains that she used old codes that had been rescinded after Lore posed as Data</item>
    <item>La Forge asks how Jore could have known those codes</item>
    <item>Jore smirks at Data and says "Take a guess, <i>brother</i>"</item>
    <item>Data and La Forge share a look of disbelief</item>
  </list>
</cp>
<cp caption="Mood and Tone">
  <list>
    <item>Tense</item>
    <item>Surreal disbelief when Lynn Jore reveals she is Lore</item>
  </list>
</cp>
<cp caption="Scene Narrative Output Structure">
  <list>
    <item>Introduce the scene’s setting and context based on the foundational elements and specific location.</item>
    <item>Present the characters present and establish their immediate situation.</item>
    <item>Detail the actions, key events, and unfolding drama within the scene.</item>
    <item>Conclude with the mood, consequences, or hints at what comes next (especially important for continuation scenes).</item>
  </list>
</cp>
<task>
  Write a scene based on the information in this prompt.
  <list>
    <item>Read Characters Present to determine which characters are in the scene.</item>
    <item>Read Specific Location to determine where the scene takes place.</item>
    <item>Read Actions and Key Events to learn what actions, interactions, and scene specific details should exist.</item>
    <item>Cross reference Characters Present, Specific Location, and Actions and Key Events with the Foundational Information data to generate overall context for the scene.</item>
    <item>Write out the scene based on the analysis done in the previous steps.</item>
    <item>Read over the scene to spot any logic flaws, inconsistencies, and/or ambiguiies.</item>
    <item>Rewrite scene elements as necessary to correct logic flaws or inconsistencies.</item>
    <item>If any ambiguiies or questions are detected, mark them for editor review.</item>
    <item>Read over the finalized scene and generate a bullet point event summary to aid in maintaining continuity.</item>
  </list>
</task>
<output-format>Generate the story and event summaries in separate response sections with the following headers: Story, Event Summary</output-format>
</poml>

The statistics on this run were as follows:

Input TokensOutput TokensTime to First TokenTokens per Second
65513672.4816.56

Interestingly, this model seems to have difficulties generating prose text, tending to generate less detailed and more dialogue heavy text. This is likely due to the training data set, which consists of the actual shooting scripts from Star Trek: The Next Generation, which were uploaded to the internet in the late-1990s/early-2000s.

Here is an example of one:

1    EXT. SPACE - THE ENTERPRISE (OPTICAL)

	sweeps by majestically at warp. WE CLEARLY SEE THE
	REGISTRY NUMBER on her wing -- ten foot tall navy blue
	letters reading NCC-1701D.

					RIKER (V.O.)
			First officer's log, stardate
			41775.5. We are en route to the
			ocean world known as Pacifica...

2    INT. ENTERPRISE - MAIN BRIDGE - WIDE ANGLE

	The mood is relaxed. RIKER is at Command with TROI
	beside him. WORF'S at Security, DATA and GEORDI at Ops
	and Conn.

					RIKER (V.O.)
				(continuing)
			Our mission is routinely
			scientific in nature. We look
			forward to seeing the warm blue
			waters and fine white beaches that
			make Pacifica a treasured jewel
			of the galaxy.

And here's a short excerpt from the output:

"Hands up! Drop the case!" Geordi commands, voice low and dangerous. Jore complies instantly, holding the case out in front of her. Data steps forward, his voice clipped and professional.
"Your transporter is inoperable. We have full control of the system."
Jore smiles, a little too sweetly, but there's no trace of mirth in her eyes.
"Of course you do. You're a clever little cat, aren't you, Commander Data?"
La Forge eyes her warily. He crosses to the console, punches in commands.

It's clear that the model was heavily skewed towards script style outputs, and also present tense format, despite the prompt deliberately pointing to past tense.

Experiments with moving the role and creative interpretation elements of the prompt into the system prompt with this and similar models have some effect. But in general, it seems that models trained on scripts or transcripts will stick to that format, versus more broadly trained models, which can be more easily switch between styles.

That said, for roleplay or script based fanfiction uses, these models seem quite competent within their limitations.

Takeaways

  • Use Snappy Driver Installer Origin to update drivers whenever you clean install a new Windows installation.
  • Get WinDBG to access Windows crash dumps, in case the crashes are related to drivers.
  • NPU only AI inference is slow on AMD APUs, pre-ROCm 7.
  • NPU+GPU AI inference on pre-ROCm 7 AMD APUs barely utilizes the NPU.
  • Qwen3 models finetuned on scripts or transcripts will tend to generate outputs reflecting the style of the training material (present tense, script style dialogue formatting).

Data from these tests will be uploaded to my public AI experiment documentation repo.