helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: ci : fix build CPU arm64

Related to https://github.com/ggerganov/llama.cpp/pull/11434#discussion_r1932879709


Changed files:
filename: .devops/vulkan.Dockerfile
patch: @@ -1,4 +1,4 @@
-ARG UBUNTU_VERSION=22.04
+ARG UBUNTU_VERSION=24.04
 
 FROM ubuntu:$UBUNTU_VERSION AS build
 
@@ -7,7 +7,7 @@ RUN apt update && apt install -y git build-essential cmake wget
 
 # Install Vulkan SDK and cURL
 RUN wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | apt-key add - && \
-    wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list && \
+    wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list https://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list && \
     apt update -y && \
     apt-get install -y vulkan-sdk libcurl4-openssl-dev curl
 

filename: .github/workflows/docker.yml
patch: @@ -28,16 +28,15 @@ jobs:
   push_to_registry:
     name: Push Docker image to Docker Hub
 
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     env:
       COMMIT_SHA: ${{ github.sha }}
     strategy:
       fail-fast: false
       matrix:
         config:
           # Multi-stage build
-          - { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, freediskspace: false}
-          - { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/arm64", full: true, light: true, server: true, freediskspace: false}
+          - { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/amd64,linux/arm64", full: true, light: true, server: true, freediskspace: false}
           - { tag: "cuda", dockerfile: ".devops/cuda.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, freediskspace: false}
           - { tag: "musa", dockerfile: ".devops/musa.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, freediskspace: false}
           - { tag: "intel", dockerfile: ".devops/intel.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, freediskspace: false}
Repository: electron/electron
Pull request: fix: dialog file filters and macOS app bundles

#### Description of Change

Refs https://github.com/electron/electron/pull/46623
Closes https://github.com/electron/electron/issues/47815

Fixed a bug where `app` extensions filters didn't allow for selecting app bundles in macOS file dialogs.

This happened as a result of a bug on macOS with UTTypes where the "app" extension by default
maps to "com.apple.application-file", which is for an Application  file (older single-file carbon based apps), and not modern Application Bundles (multi file packages as you'd see for all modern applications).

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [x] PR description included and stakeholders cc'd
- [x] `npm test` passes
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: Fixed a bug where `app` extensions filters didn't allow for selecting app bundles in macOS file dialogs.

Changed files:
filename: shell/browser/ui/file_dialog_mac.mm
patch: @@ -122,6 +122,18 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
       if (ext == "*") {
         [content_types_set addObject:[UTType typeWithFilenameExtension:@"*"]];
         break;
+      } else if (ext == "app") {
+        // This handles a bug on macOS where the "app" extension by default
+        // maps to "com.apple.application-file", which is for an Application
+        // file (older single-file carbon based apps), and not modern
+        // Application Bundles (multi file packages as you'd see for all modern
+        // applications).
+        UTType* superType =
+            [UTType typeWithIdentifier:@"com.apple.application-bundle"];
+        if (UTType* utt = [UTType typeWithFilenameExtension:@"app"
+                                           conformingToType:superType]) {
+          [content_types_set addObject:utt];
+        }
       } else {
         if (UTType* utt = [UTType typeWithFilenameExtension:@(ext.c_str())])
           [content_types_set addObject:utt];
Repository: vercel/next.js
Pull request: Turbopack: turn panic into bail

Eventual consistency strikes again

Closes PACK-5696

Changed files:
filename: turbopack/crates/turbopack-ecmascript/src/lib.rs
patch: @@ -2543,9 +2543,9 @@ impl SourceMapper for CodeGenResultSourceMap {
     }
     fn span_to_snippet(&self, sp: Span) -> Result<String, Box<SpanSnippetError>> {
         match self {
-            CodeGenResultSourceMap::None => {
-                panic!("CodeGenResultSourceMap::None cannot span_to_snippet")
-            }
+            CodeGenResultSourceMap::None => Err(Box::new(SpanSnippetError::SourceNotAvailable {
+                filename: FileName::Anon,
+            })),
             CodeGenResultSourceMap::Single { source_map } => source_map.span_to_snippet(sp),
             CodeGenResultSourceMap::ScopeHoisting {
                 modules_header_width,
Repository: denoland/deno
Pull request: fix(ext/node): use constant-time comparison for GCM auth tag verification

## Summary

- Replace direct `==` comparison with `subtle::ConstantTimeEq` for AES-GCM authentication tag verification in both AES-128-GCM and AES-256-GCM decrypt paths
- The standard `==` operator short-circuits on the first differing byte, making it susceptible to timing side-channel attacks
- This matches Node.js/OpenSSL behavior which uses `CRYPTO_memcmp` for AEAD tag verification

Changed files:
filename: Cargo.lock
patch: @@ -2828,6 +2828,7 @@ dependencies = [
  "signature 2.2.0",
  "sm3",
  "spki 0.7.3",
+ "subtle",
  "thiserror 2.0.12",
  "tokio",
  "x25519-dalek",

filename: Cargo.toml
patch: @@ -415,6 +415,7 @@ sha3 = "0.10.8"
 signature = "2.1"
 sm3 = "0.4.2"
 spki = "0.7.2"
+subtle = "2.6.1"
 x25519-dalek = "2.0.0"
 x509-parser = "0.15.0"
 

filename: ext/node_crypto/Cargo.toml
patch: @@ -61,6 +61,7 @@ sha3 = { workspace = true, features = ["oid"] }
 signature.workspace = true
 sm3.workspace = true
 spki.workspace = true
+subtle.workspace = true
 thiserror.workspace = true
 tokio.workspace = true
 x25519-dalek = { workspace = true, features = ["static_secrets"] }

filename: ext/node_crypto/cipher.rs
patch: @@ -14,6 +14,7 @@ use deno_core::Resource;
 use deno_error::JsErrorClass;
 use digest::KeyInit;
 use digest::generic_array::GenericArray;
+use subtle::ConstantTimeEq;
 
 type Tag = Option<Vec<u8>>;
 
@@ -867,7 +868,7 @@ impl Decipher {
         } else {
           tag_slice
         };
-        if truncated_tag == auth_tag {
+        if truncated_tag.ct_eq(auth_tag).into() {
           Ok(())
         } else {
           Err(DecipherError::DataAuthenticationFailed)
@@ -881,7 +882,7 @@ impl Decipher {
         } else {
           tag_slice
         };
-        if truncated_tag == auth_tag {
+        if truncated_tag.ct_eq(auth_tag).into() {
           Ok(())
         } else {
           Err(DecipherError::DataAuthenticationFailed)
Repository: ollama/ollama
Pull request: Fix envconfig unit test


Changed files:
filename: server/envconfig/config_test.go
patch: @@ -1,20 +1,20 @@
 package envconfig
 
 import (
-	"os"
 	"testing"
 
 	"github.com/stretchr/testify/require"
 )
 
 func TestConfig(t *testing.T) {
-	os.Setenv("OLLAMA_DEBUG", "")
+	Debug = false // Reset whatever was loaded in init()
+	t.Setenv("OLLAMA_DEBUG", "")
 	LoadConfig()
 	require.False(t, Debug)
-	os.Setenv("OLLAMA_DEBUG", "false")
+	t.Setenv("OLLAMA_DEBUG", "false")
 	LoadConfig()
 	require.False(t, Debug)
-	os.Setenv("OLLAMA_DEBUG", "1")
+	t.Setenv("OLLAMA_DEBUG", "1")
 	LoadConfig()
 	require.True(t, Debug)
 }
Repository: denoland/deno
Pull request: fix(ext/node): validate process.exitCode and fix process constructor name

## Summary
- Validate `process.exitCode` setter to reject non-integer values with `ERR_INVALID_ARG_TYPE` (matching Node.js behavior)
- Simplify `process.exit()` to delegate validation to the exitCode setter
- Fix `invalidArgTypeHelper` to format numbers as `Received <value>` instead of `Received type number (<value>)`
- Set `Process.prototype.constructor` name to `"process"` so V8 error messages show `#<process>` instead of `#<EventEmitter>`

## Test plan
- [x] `test-process-exit-code-validation.js` now passes (added to config.jsonc)
- [x] Existing `test-process-exit-*` tests still pass
- [x] `tools/format.js` and `tools/lint.js --js` pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Changed files:
filename: ext/node/polyfills/process.ts
patch: @@ -117,10 +117,8 @@ export const execArgv: string[] = [];
 
 /** https://nodejs.org/api/process.html#process_process_exit_code */
 export const exit = (code?: number | string) => {
-  if (code || code === 0) {
+  if (code !== undefined) {
     process.exitCode = code;
-  } else if (Number.isNaN(code)) {
-    process.exitCode = 1;
   }
 
   ProcessExitCode = denoOs.getExitCode();
@@ -484,6 +482,10 @@ function Process(this: any) {
   EventEmitter.call(this);
 }
 Process.prototype = Object.create(EventEmitter.prototype);
+// V8 uses the constructor's name for error messages like
+// "Cannot delete property 'exitCode' of #<process>"
+const _process = function process() {};
+Process.prototype.constructor = _process;
 
 // Look up the actual registered listener for a signal event. When `once()` is
 // used, EventEmitter wraps the listener in a function with a `.listener`
@@ -811,15 +813,20 @@ Object.defineProperty(process, "exitCode", {
     if (code == null) {
       parsedCode = 0;
     } else if (typeof code === "number") {
+      if (!Number.isInteger(code)) {
+        throw new ERR_OUT_OF_RANGE("code", "an integer", code);
+      }
       parsedCode = code;
     } else if (typeof code === "string") {
+      if (
+        code === "" || !Number.isFinite(Number(code)) ||
+        !Number.isInteger(Number(code))
+      ) {
+        throw new ERR_INVALID_ARG_TYPE("code", "integer", code);
+      }
       parsedCode = Number(code);
     } else {
-      throw new ERR_INVALID_ARG_TYPE("code", "number", code);
-    }
-
-    if (!Number.isInteger(parsedCode)) {
-      throw new ERR_OUT_OF_RANGE("code", "an integer", parsedCode);
+      throw new ERR_INVALID_ARG_TYPE("code", "integer", code);
     }
 
     denoOs.setExitCode(parsedCode);

filename: tests/node_compat/config.jsonc
patch: @@ -1673,6 +1673,7 @@
     "parallel/test-process-env-sideeffects.js": {},
     "parallel/test-process-env-tz.js": {},
     "parallel/test-process-env-windows-error-reset.js": {},
+    "parallel/test-process-exit-code-validation.js": {},
     "parallel/test-process-exit-from-before-exit.js": {},
     "parallel/test-process-exit-handler.js": {},
     "parallel/test-process-exit-recursive.js": {},
Repository: huggingface/transformers
Pull request: Swap columns and rows of the grid layout in LFM2-VL

Fixing swapped rows and columns that were resulting in incorrect positional special tokens. Fixed integration tests on the modeling file.

@zucchini-nlp

Changed files:
filename: src/transformers/models/lfm2_vl/image_processing_lfm2_vl_fast.py
patch: @@ -391,7 +391,7 @@ def resize_and_split(
 
         # Big image will be cropped into patches and small images are just resized
         if is_image_large and do_image_splitting:
-            images, num_rows, num_cols = self.crop_image_to_patches(
+            images, num_cols, num_rows = self.crop_image_to_patches(
                 images,
                 min_tiles=min_tiles,
                 max_tiles=max_tiles,

filename: tests/models/lfm2_vl/test_modeling_lfm2_vl.py
patch: @@ -300,7 +300,7 @@ def test_integration_test_batched(self):
         )
 
         # Create inputs
-        text = ["<image>In this image, we see", "<image>In this image, there is a cat on"]
+        text = ["<image>In this image, we see", "<image>In this image, we see"]
         images = [[self.image2], [self.image]]
         inputs = self.processor(text=text, images=images, return_tensors="pt", padding=True)
         inputs.to(device=torch_device, dtype=torch.bfloat16)

filename: tests/models/lfm2_vl/test_processing_lfm2_vl.py
patch: @@ -291,7 +291,7 @@ def test_add_special_tokens_processor_image_splitting_large_image(self):
         # fmt: off
         inputs = processor(text=text, images=self.large_image, add_special_tokens=False, max_pixels_tolerance=2.0, do_image_splitting=True)
         tokenized_sentence = processor.tokenizer(text_str, add_special_tokens=False)
-        large_image_tokens = self.get_split_image_expected_tokens(processor, 2, 4, True, 8)
+        large_image_tokens = self.get_split_image_expected_tokens(processor, 4, 2, True, 8)
         expected_input_ids = [tokenized_sentence["input_ids"] + large_image_tokens]
         self.assertEqual(inputs["input_ids"], expected_input_ids)
         # fmt: on
Repository: denoland/deno
Pull request: fix(ext/node): skip normalization in path.win32.join for reserved device names

## Summary

- When a joined path contains a Windows reserved device name with a colon (e.g. `CON:`, `PRN:`, `NUL:`), skip `normalize()` and only convert `/` to `\`, matching Node.js behavior
- This prevents `..` segments from being resolved through device name boundaries (e.g. `CON:..\..` would otherwise traverse up)
- Enable `test-path-join.js` node compat test

**Before:** `path.win32.join("\\server\\uploads", "CON:..\\..\\private")` → `\server\private` (incorrect, resolves `..` through `CON:`)

**After:** `path.win32.join("\\server\\uploads", "CON:..\\..\\private")` → `\server\uploads\CON:..\..\private` (matches Node.js)

## Test plan

- [x] `test-path-join.js` node compat test passes (newly enabled)
- [x] All 17 path compat tests pass
- [x] `./tools/format.js` and `./tools/lint.js --js` pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Changed files:
filename: ext/node/polyfills/path/_win32.ts
patch: @@ -525,6 +525,36 @@ export function join(...paths: string[]): string {
     }
   }
 
+  // If any path component is a Windows reserved device name (e.g. CON:,
+  // PRN:, NUL:), skip normalization to avoid resolving `..` through it.
+  // This matches Node.js behavior -- only replace `/` with `\`.
+  let hasReservedComponent = false;
+  {
+    let segStart = 0;
+    for (let i = 0; i <= joined.length; i++) {
+      if (
+        i === joined.length ||
+        isPathSeparator(StringPrototypeCharCodeAt(joined, i))
+      ) {
+        if (i > segStart) {
+          const seg = StringPrototypeSlice(joined, segStart, i);
+          const colonIdx = StringPrototypeIndexOf(seg, ":");
+          if (colonIdx !== -1 && isWindowsReservedName(seg, colonIdx)) {
+            hasReservedComponent = true;
+            break;
+          }
+        }
+        segStart = i + 1;
+      }
+    }
+  }
+
+  if (hasReservedComponent) {
+    // Only convert forward slashes to backslashes, skip normalize.
+    const parts = StringPrototypeSplit(joined, "/");
+    return ArrayPrototypeJoin(parts, "\\");
+  }
+
   return normalize(joined);
 }
 

filename: tests/node_compat/config.jsonc
patch: @@ -1499,6 +1499,7 @@
     "parallel/test-path-extname.js": {},
     "parallel/test-path-glob.js": {},
     "parallel/test-path-isabsolute.js": {},
+    "parallel/test-path-join.js": {},
     "parallel/test-path-makelong.js": {},
     "parallel/test-path-normalize.js": {},
     "parallel/test-path-parse-format.js": {},
Repository: ollama/ollama
Pull request: Fall back to CPU runner with zero layers


Changed files:
filename: llm/server.go
patch: @@ -105,6 +105,10 @@ func NewLlamaServer(gpus gpu.GpuInfoList, model string, ggml *GGML, adapters, pr
 			// disable partial offloading when model is greater than total system memory as this
 			// can lead to locking up the system
 			opts.NumGPU = 0
+		} else if gpus[0].Library != "metal" && layers == 0 {
+			// Don't bother loading into the GPU if no layers can fit
+			cpuRunner = serverForCpu()
+			gpuCount = 0
 		} else if opts.NumGPU < 0 && layers > 0 && gpus[0].Library != "cpu" {
 			opts.NumGPU = layers
 		}
Repository: huggingface/transformers
Pull request: [quantization] Skip Fp8 tests when hardware capability < 8.9

# What does this PR do?

Skips FP8 tests when hardware capability is < 8.9 (nvidia 4090)

It's erroring in the CI with gpus 8.6 : https://github.com/huggingface/transformers/actions/runs/18703774699/job/53337972742

Changed files:
filename: tests/quantization/finegrained_fp8/test_fp8.py
patch: @@ -64,6 +64,11 @@ def test_from_dict(self):
 @require_accelerate
 @require_read_token
 @require_torch_accelerator
+@unittest.skipIf(
+    get_device_properties()[0] == "cuda"
+    and (get_device_properties()[1] < 8 or (get_device_properties()[1] == 8 and get_device_properties()[2] < 9)),
+    "Skipping FP8QuantizerTest because it is not supported on GPU with capability < 8.9",
+)
 class FP8QuantizerTest(unittest.TestCase):
     model_name = "meta-llama/Llama-3.2-1B"
     input_text = "Once upon a time"
@@ -251,13 +256,14 @@ def test_save_pretrained_offload(self):
 
 
 @require_torch_accelerator
+@unittest.skipIf(
+    get_device_properties()[0] == "cuda"
+    and (get_device_properties()[1] < 8 or (get_device_properties()[1] == 8 and get_device_properties()[2] < 9)),
+    "Skipping FP8LinearTest because it is not supported on GPU with capability < 8.9",
+)
 class FP8LinearTest(unittest.TestCase):
     device = torch_device
 
-    @unittest.skipIf(
-        get_device_properties()[0] == "cuda" and get_device_properties()[1] < 9,
-        "Skipping FP8LinearTest because it is not supported on GPU with capability < 9.0",
-    )
     def test_linear_preserves_shape(self):
         """
         Test that FP8Linear preserves shape when in_features == out_features.
@@ -270,10 +276,6 @@ def test_linear_preserves_shape(self):
         x_ = linear(x)
         self.assertEqual(x_.shape, x.shape)
 
-    @unittest.skipIf(
-        get_device_properties()[0] == "cuda" and get_device_properties()[1] < 9,
-        "Skipping FP8LinearTest because it is not supported on GPU with capability < 9.0",
-    )
     def test_linear_with_diff_feature_size_preserves_shape(self):
         """
         Test that FP8Linear generates the correct shape when in_features != out_features.
Repository: nodejs/node
Pull request: test_runner: recalculate run duration on watch restart

Re-running a test using the `--watch` flag keeps the duration unchanged across the various reruns.  
I've drafted a trivial implementation.

The test I introduced is flaky by design; I need to consider a better approach even though the number of digits is high and the likelihood of getting the same number in two consecutive runs is really low.

<img width="772" alt="image" src="https://github.com/user-attachments/assets/fad512de-ed95-468c-9ac7-b0a937f41920" />


Changed files:
filename: lib/internal/test_runner/runner.js
patch: @@ -503,7 +503,10 @@ function watchFiles(testFiles, opts) {
         return; // Avoid rerunning files when file deleted
       }
     }
-
+    // Reset the root start time to recalculate the duration
+    // of the run
+    opts.root.clearExecutionTime();
+    // Restart test files
     if (opts.isolation === 'none') {
       PromisePrototypeThen(restartTestFile(kIsolatedProcessName), undefined, (error) => {
         triggerUncaughtException(error, true /* fromPromise */);

filename: lib/internal/test_runner/test.js
patch: @@ -1341,6 +1341,11 @@ class Test extends AsyncResource {
     this.parent.reportStarted();
     this.reporter.start(this.nesting, this.loc, this.name);
   }
+
+  clearExecutionTime() {
+    this.startTime = hrtime();
+    this.endTime = null;
+  }
 }
 
 class TestHook extends Test {

filename: test/parallel/test-runner-run-watch.mjs
patch: @@ -189,6 +189,8 @@ async function testWatch(
   action === 'rename2' && await testRename();
   action === 'delete' && await testDelete();
   action === 'create' && await testCreate();
+
+  return runs;
 }
 
 describe('test runner watch mode', () => {
@@ -241,6 +243,20 @@ describe('test runner watch mode', () => {
       await testWatch({ action: 'create', fileToCreate: 'new-test-file.test.js' });
     });
 
+  // This test is flaky by its nature as it relies on the timing of 2 different runs
+  // considering the number of digits in the duration_ms is 9
+  // the chances of having the same duration_ms are very low
+  // but not impossible
+  // In case of costant failures, consider increasing the number of tests
+  it('should recalculate the run duration on a watch restart', async () => {
+    const testRuns = await testWatch({ file: 'test.js', fileToUpdate: 'test.js' });
+    const durations = testRuns.map((run) => {
+      const runDuration = run.match(/# duration_ms\s([\d.]+)/);
+      return runDuration;
+    });
+    assert.notDeepStrictEqual(durations[0][1], durations[1][1]);
+  });
+
   describe('test runner watch mode with different cwd', () => {
     it(
       'should execute run using a different cwd for the runner than the process cwd',
Repository: ollama/ollama
Pull request: Integration fixes


Changed files:
filename: integration/concurrency_test.go
patch: @@ -217,7 +217,7 @@ func TestMultiModelStress(t *testing.T) {
 			defer wg.Done()
 			for j := 0; j < 3; j++ {
 				slog.Info("Starting", "req", i, "iter", j, "model", req[i].Model)
-				DoGenerate(ctx, t, client, req[i], resp[i], 90*time.Second, 5*time.Second)
+				DoGenerate(ctx, t, client, req[i], resp[i], 120*time.Second, 5*time.Second)
 			}
 		}(i)
 	}

filename: integration/utils_test.go
patch: @@ -85,7 +85,7 @@ func GetTestEndpoint() (*api.Client, string) {
 var serverMutex sync.Mutex
 var serverReady bool
 
-func startServer(ctx context.Context, ollamaHost string) error {
+func startServer(t *testing.T, ctx context.Context, ollamaHost string) error {
 	// Make sure the server has been built
 	CLIName, err := filepath.Abs("../ollama")
 	if err != nil {
@@ -200,7 +200,7 @@ func InitServerConnection(ctx context.Context, t *testing.T) (*api.Client, strin
 		}
 		lifecycle.ServerLogFile = fp.Name()
 		fp.Close()
-		require.NoError(t, startServer(ctx, testEndpoint))
+		require.NoError(t, startServer(t, ctx, testEndpoint))
 	}
 
 	return client, testEndpoint, func() {
Repository: ollama/ollama
Pull request: Always use the sorted list of GPUs

Make sure the first GPU has the most free space

Changed files:
filename: server/sched.go
patch: @@ -567,9 +567,9 @@ func pickBestFitGPUs(req *LlmRequest, ggml *llm.GGML, gpus gpu.GpuInfoList) gpu.
 		// - try subsets of GPUs instead of just falling back to 1 or all in a family
 
 		// Now try all the GPUs
-		if ok, estimatedVRAM = llm.PredictServerFit(gl, ggml, req.model.AdapterPaths, req.model.ProjectorPaths, req.opts); ok {
-			slog.Debug("new model will fit in available VRAM, loading", "model", req.model.ModelPath, "library", gl[0].Library, "required", format.HumanBytes2(estimatedVRAM))
-			return gl
+		if ok, estimatedVRAM = llm.PredictServerFit(sgl, ggml, req.model.AdapterPaths, req.model.ProjectorPaths, req.opts); ok {
+			slog.Debug("new model will fit in available VRAM, loading", "model", req.model.ModelPath, "library", sgl[0].Library, "required", format.HumanBytes2(estimatedVRAM))
+			return sgl
 		}
 	}
 	return nil