helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: opencl: mark `argsort` unsupported if cols exceed workgroup limit

In the current implementation, the workgroup size is `(cols, 1, 1)`. For large tensors, the workgroup size may exceed the kernel limit, resulting in kernel launch failure. E.g., in the new test case added in #15354, the max workgroup size for this kernel on A750 is 896 but 1024 is required.

This PR marks such `argsort` as unsupported. Also print out the max workgroup size supported by the device (the upper bound of the max workgroup size supported by a particular kernel) for reference.

Changed files:
filename: ggml/src/ggml-opencl/ggml-opencl.cpp
patch: @@ -333,6 +333,7 @@ struct ggml_backend_opencl_context {
 
     cl_int alignment;
     size_t max_alloc_size;
+    size_t max_workgroup_size;
     bool fp16_support;
     bool has_vector_subgroup_broadcast;
     bool disable_fusion;
@@ -2218,6 +2219,9 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
     clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(size_t), &backend_ctx->max_alloc_size, NULL);
     GGML_LOG_INFO("ggml_opencl: max mem alloc size: %zu MB\n", backend_ctx->max_alloc_size/1024/1024);
 
+    clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(size_t), &backend_ctx->max_workgroup_size, NULL);
+    GGML_LOG_INFO("ggml_opencl: device max workgroup size: %lu\n", backend_ctx->max_workgroup_size);
+
     // Check SVM.
     cl_device_svm_capabilities svm_caps;
     CL_CHECK(clGetDeviceInfo(device, CL_DEVICE_SVM_CAPABILITIES, sizeof(cl_device_svm_capabilities), &svm_caps, 0));
@@ -2533,7 +2537,8 @@ static ggml_status ggml_backend_opencl_graph_compute(ggml_backend_t backend, ggm
 }
 
 static bool ggml_opencl_supports_op(ggml_backend_dev_t dev, const struct ggml_tensor * op) {
-    GGML_UNUSED(dev);
+    ggml_backend_opencl_device_context * dev_ctx     = (ggml_backend_opencl_device_context *)dev->context;
+    ggml_backend_opencl_context *        backend_ctx = dev_ctx->backend_ctx;
 
     switch (op->op) {
         case GGML_OP_NONE:
@@ -2708,8 +2713,17 @@ static bool ggml_opencl_supports_op(ggml_backend_dev_t dev, const struct ggml_te
         }
         case GGML_OP_IM2COL:
             return true;
-        case GGML_OP_ARGSORT:
-            return op->src[0]->type == GGML_TYPE_F32;
+        case GGML_OP_ARGSORT: {
+            cl_kernel kernel = backend_ctx->kernel_argsort_f32_i32;
+            int max_workgroup_size = backend_ctx->get_kernel_workgroup_size(kernel);
+
+            int cols = 1;
+            while (cols < op->ne[0]) {
+                cols *= 2;
+            }
+
+            return cols <= max_workgroup_size && op->src[0]->type == GGML_TYPE_F32;
+        }
         case GGML_OP_SUM_ROWS:
             return op->src[0]->type == GGML_TYPE_F32 && ggml_is_contiguous(op->src[0]);
         case GGML_OP_FLASH_ATTN_EXT:
Repository: facebook/react
Pull request: fix[devtools/extension]: unregister dynamically injected content scripts instead of filtering

Same as https://github.com/facebook/react/pull/26765.
Related bug report - https://bugs.chromium.org/p/chromium/issues/detail?id=1393762.

This was changed in https://github.com/facebook/react/pull/27215, when I have refactored background logic in the extension. I've missed this case, because the extension was working in incognito mode.

Turns out, it stops working after the first reload, and it stops only in incognito mode, so I am rolling out back the previous workaround.

Tested on Chrome that it fixes the extension in incognito mode and that it doesn't affect default mode.


Changed files:
filename: packages/react-devtools-extensions/src/background/dynamicallyInjectContentScripts.js
patch: @@ -11,7 +11,7 @@ const contentScriptsToInject = IS_FIREFOX
         js: ['build/proxy.js'],
         matches: ['<all_urls>'],
         persistAcrossSessions: true,
-        runAt: 'document_idle',
+        runAt: 'document_end',
       },
     ]
   : [
@@ -43,26 +43,19 @@ const contentScriptsToInject = IS_FIREFOX
 
 async function dynamicallyInjectContentScripts() {
   try {
-    const alreadyRegisteredContentScripts =
-      await chrome.scripting.getRegisteredContentScripts();
-
-    const scriptsToInjectNow = contentScriptsToInject.filter(
-      scriptToInject =>
-        !alreadyRegisteredContentScripts.some(
-          registeredScript => registeredScript.id === scriptToInject.id,
-        ),
-    );
+    // Using this, instead of filtering registered scrips with `chrome.scripting.getRegisteredScripts`
+    // because of https://bugs.chromium.org/p/chromium/issues/detail?id=1393762
+    // This fixes registering proxy content script in incognito mode
+    await chrome.scripting.unregisterContentScripts();
 
-    if (scriptsToInjectNow.length) {
-      // equivalent logic for Firefox is in prepareInjection.js
-      // Manifest V3 method of injecting content script
-      // TODO(hoxyq): migrate Firefox to V3 manifests
-      // Note: the "world" option in registerContentScripts is only available in Chrome v102+
-      // It's critical since it allows us to directly run scripts on the "main" world on the page
-      // "document_start" allows it to run before the page's scripts
-      // so the hook can be detected by react reconciler
-      await chrome.scripting.registerContentScripts(scriptsToInjectNow);
-    }
+    // equivalent logic for Firefox is in prepareInjection.js
+    // Manifest V3 method of injecting content script
+    // TODO(hoxyq): migrate Firefox to V3 manifests
+    // Note: the "world" option in registerContentScripts is only available in Chrome v102+
+    // It's critical since it allows us to directly run scripts on the "main" world on the page
+    // "document_start" allows it to run before the page's scripts
+    // so the hook can be detected by react reconciler
+    await chrome.scripting.registerContentScripts(contentScriptsToInject);
   } catch (error) {
     console.error(error);
   }
Repository: ggml-org/llama.cpp
Pull request: model : add gpt-oss type strings


Changed files:
filename: src/llama-model.cpp
patch: @@ -86,6 +86,7 @@ const char * llm_type_name(llm_type type) {
         case LLM_TYPE_40B:           return "40B";
         case LLM_TYPE_65B:           return "65B";
         case LLM_TYPE_70B:           return "70B";
+        case LLM_TYPE_120B:          return "120B";
         case LLM_TYPE_142B:          return "142B";
         case LLM_TYPE_236B:          return "236B";
         case LLM_TYPE_290B:          return "290B";
@@ -1834,7 +1835,11 @@ void llama_model::load_hparams(llama_model_loader & ml) {
                 hparams.swa_type = LLAMA_SWA_TYPE_STANDARD;
                 hparams.set_swa_pattern(2);
 
-                // TODO: switch (hparams.n_layer)
+                switch (hparams.n_layer) {
+                    case 24: type = LLM_TYPE_20B; break;
+                    case 36: type = LLM_TYPE_120B; break;
+                    default: type = LLM_TYPE_UNKNOWN;
+                }
             } break;
         case LLM_ARCH_LFM2:
             {

filename: src/llama-model.h
patch: @@ -79,6 +79,7 @@ enum llm_type {
     LLM_TYPE_40B,
     LLM_TYPE_65B,
     LLM_TYPE_70B,
+    LLM_TYPE_120B,
     LLM_TYPE_142B,
     LLM_TYPE_236B,
     LLM_TYPE_290B,
Repository: ggml-org/llama.cpp
Pull request: Add top-nsigma sampler to help globally.

Fixes #15423.


Changed files:
filename: common/arg.cpp
patch: @@ -1830,7 +1830,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
         [](common_params & params, const std::string & value) {
             params.sampling.top_n_sigma = std::stof(value);
         }
-    ).set_examples({LLAMA_EXAMPLE_MAIN}).set_sparam());
+    ).set_sparam());
     add_opt(common_arg(
         {"--xtc-probability"}, "N",
         string_format("xtc probability (default: %.1f, 0.0 = disabled)", (double)params.sampling.xtc_probability),
Repository: facebook/react
Pull request: Fix: Initialize childIndex in Task constructor

This field was not being initialized. Although the property is part of the Flow type, the type error wasn't caught because the constructor itself is not covered by Flow, which is unfortunate. (I assume this is related to the dev-only componentStack property.)

Changed files:
filename: packages/react-server/src/ReactFizzServer.js
patch: @@ -578,6 +578,7 @@ function createTask(
     context,
     treeContext,
     thenableState,
+    childIndex: -1,
   }: any);
   if (__DEV__) {
     task.componentStack = null;
Repository: nodejs/node
Pull request: test: update WPT for urlpattern to ef6d83d789

This is an automated update of the WPT for urlpattern to https://github.com/web-platform-tests/wpt/commit/ef6d83d789483763207af8cedcbf1f3c1317b981.

Changed files:
filename: test/fixtures/wpt/README.md
patch: @@ -29,7 +29,7 @@ Last update:
 - resources: https://github.com/web-platform-tests/wpt/tree/1e140d63ec/resources
 - streams: https://github.com/web-platform-tests/wpt/tree/bc9dcbbf1a/streams
 - url: https://github.com/web-platform-tests/wpt/tree/a23788b77a/url
-- urlpattern: https://github.com/web-platform-tests/wpt/tree/1b56d89a26/urlpattern
+- urlpattern: https://github.com/web-platform-tests/wpt/tree/ef6d83d789/urlpattern
 - user-timing: https://github.com/web-platform-tests/wpt/tree/5ae85bf826/user-timing
 - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/cde25e7e3c/wasm/jsapi
 - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi

filename: test/fixtures/wpt/urlpattern/resources/urlpatterntestdata.json
patch: @@ -1121,6 +1121,63 @@
       "hostname": { "input": "xn--caf-dma.com", "groups": {}}
     }
   },
+  {
+    "pattern": ["http://\uD83D\uDEB2.com/"],
+    "inputs": ["http://\uD83D\uDEB2.com/"],
+    "exactly_empty_components": [ "port" ],
+    "expected_obj": {
+      "protocol": "http",
+      "hostname": "xn--h78h.com",
+      "pathname": "/"
+    },
+    "expected_match": {
+      "protocol": { "input": "http", "groups": {}},
+      "hostname": { "input": "xn--h78h.com", "groups": {}},
+      "pathname": { "input": "/", "groups": {}}
+    }
+  },
+  {
+    "pattern": ["http://\uD83D \uDEB2"],
+    "expected_obj": "error"
+  },
+  {
+    "pattern": [{"hostname":"\uD83D \uDEB2"}],
+    "expected_obj": "error"
+  },
+  {
+    "pattern": [{"pathname":"\uD83D \uDEB2"}],
+    "inputs": [],
+    "expected_obj": {
+      "pathname": "%EF%BF%BD%20%EF%BF%BD"
+    },
+    "expected_match": null
+  },
+  {
+    "pattern": [{"pathname":":\uD83D \uDEB2"}],
+    "expected_obj": "error"
+  },
+  {
+    "pattern": [{"pathname":":a\uDB40\uDD00b"}],
+    "inputs": [],
+    "expected_obj": {
+      "pathname": ":a\uDB40\uDD00b"
+    },
+    "expected_match": null
+  },
+  {
+    "pattern": [{"pathname":"test/:a\uD801\uDC50b"}],
+    "inputs": [{"pathname":"test/foo"}],
+    "expected_obj": {
+      "pathname": "test/:a\uD801\uDC50b"
+    },
+    "expected_match": {
+      "pathname": { "input": "test/foo", "groups": { "a\uD801\uDC50b": "foo" }}
+    }
+  },
+  {
+    "pattern": [{"pathname":":\uD83D\uDEB2"}],
+    "expected_obj": "error"
+  },
   {
     "pattern": [{ "port": "" }],
     "inputs": [{ "protocol": "http", "port": "80" }],

filename: test/fixtures/wpt/versions.json
patch: @@ -76,7 +76,7 @@
     "path": "url"
   },
   "urlpattern": {
-    "commit": "1b56d89a261b86dedfd2854b53c1732e435f1f57",
+    "commit": "ef6d83d789483763207af8cedcbf1f3c1317b981",
     "path": "urlpattern"
   },
   "user-timing": {
Repository: denoland/deno
Pull request: ci: reduce the concurrency number of parallel runs to navigator.hardwareConcurrency

Currently `run_all_test_unmodified.ts` script is killed in linux CI for non obvious reason. I guess this could be caused by too much load to the cpu by using the concurrency of `navigator.hardwareConcurrency * 2`. This PR reduces it to `navigator.hardwareConcurrency`


---
CI run: https://github.com/denoland/deno/actions/runs/14097513475/job/39488256550

Error:
```
/home/runner/work/_temp/9373fec9-14cb-4227-875e-007fc328ab71.sh: line 1:  2301 Killed                  deno -A --config tests/config/deno.json tests/node_compat/run_all_test_unmodified.ts
```

Changed files:
filename: tests/node_compat/run_all_test_unmodified.ts
patch: @@ -289,7 +289,7 @@ async function main() {
   }
   // Runs parallel tests
   for await (
-    const _ of pooledMap(navigator.hardwareConcurrency * 2, parallel, run)
+    const _ of pooledMap(navigator.hardwareConcurrency, parallel, run)
   ) {
     // pass
   }
Repository: denoland/deno
Pull request: ci: fix node_compat_test workflow

This PR fixes the below in node_compat_test workflow:
- The config file for testing isn't specified in `deno run` command
- git submodules are not fetched
- CI name is not aligned with the rest of workflows (`node-compat-test` -> `node_compat_test`)

Changed files:
filename: .github/workflows/node_compat_test.yml
patch: @@ -1,4 +1,4 @@
-name: node-compat-test
+name: node_compat_test
 
 on:
   schedule:
@@ -20,6 +20,8 @@ jobs:
     steps:
       - name: Checkout
         uses: actions/checkout@v4
+        with:
+          submodules: true
       - name: Setup Deno
         uses: denoland/setup-deno@v2
         with:
@@ -36,7 +38,7 @@ jobs:
         with:
           project_id: denoland
       - name: Run tests
-        run: deno -A tests/node_compat/run_all_test_unmodified.ts
+        run: deno -A --config tests/config/deno.json tests/node_compat/run_all_test_unmodified.ts
       - name: Gzip the report
         run: gzip tests/node_compat/report.json
       - name: Upload the report to dl.deno.land
Repository: nodejs/node
Pull request: test: automatically sync wpt urlpattern tests

Sync urlpattern wpt tests 

Changed files:
filename: .github/workflows/update-wpt.yml
patch: @@ -9,7 +9,7 @@ on:
       subsystems:
         description: Subsystem to run the update for
         required: false
-        default: '["url", "WebCryptoAPI"]'
+        default: '["url", "urlpattern", "WebCryptoAPI"]'
 
 permissions:
   contents: read
@@ -24,7 +24,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        subsystem: ${{ fromJSON(github.event.inputs.subsystems || '["url", "WebCryptoAPI"]') }}
+        subsystem: ${{ fromJSON(github.event.inputs.subsystems || '["url", "urlpattern", "WebCryptoAPI"]') }}
 
     steps:
       - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
Repository: nodejs/node
Pull request: src,test: expand test coverage for urlpattern and fix error

Improve test coverage for URLPattern, fixup a typecheck error, and eliminate an unnecessary `UNREACHABLE` branch.

Changed files:
filename: src/node_url_pattern.cc
patch: @@ -104,13 +104,14 @@ URLPatternRegexProvider::regex_search(std::string_view input,
       return std::nullopt;
     }
 
+    // V8 checks that the regexp exec result is one of the correct types.
+    DCHECK_IMPLIES(!entry->IsUndefined(), entry->IsString());
+
     if (entry->IsUndefined()) {
       result.emplace_back(std::nullopt);
     } else if (entry->IsString()) {
       Utf8Value utf8_entry(isolate, entry.As<String>());
       result.emplace_back(utf8_entry.ToString());
-    } else {
-      UNREACHABLE("v8::RegExp::Exec return a non-string, non-undefined value.");
     }
   }
   return result;
@@ -191,7 +192,8 @@ void URLPattern::New(const FunctionCallbackInfo<Value>& args) {
         return;
       }
     } else {
-      THROW_ERR_MISSING_ARGS(env, "baseURL or options must be provided");
+      THROW_ERR_INVALID_ARG_TYPE(env,
+                                 "second argument must be a string or object");
       return;
     }
 

filename: test/parallel/test-urlpattern-types.js
patch: @@ -0,0 +1,46 @@
+'use strict';
+
+require('../common');
+
+const { URLPattern } = require('url');
+const { throws } = require('assert');
+
+// Verifies that calling URLPattern with no new keyword throws.
+throws(() => URLPattern(), {
+  code: 'ERR_CONSTRUCT_CALL_REQUIRED',
+});
+
+// Verifies that type checks are performed on the arguments.
+throws(() => new URLPattern(1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => new URLPattern({}, 1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => new URLPattern({}, '', 1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => new URLPattern({}, { ignoreCase: '' }), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+const pattern = new URLPattern();
+
+throws(() => pattern.exec(1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => pattern.exec('', 1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => pattern.test(1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
+
+throws(() => pattern.test('', 1), {
+  code: 'ERR_INVALID_ARG_TYPE',
+});
Repository: facebook/react
Pull request: Fix: Skip hidden inputs before text instance

Found a hydration bug that happens when you pass a Server Action to `formAction` and the next node is a text instance.

The HTML generated by Fizz is something like this:

```html
<button name="$ACTION_REF_5" formAction="" formEncType="multipart/form-data" formMethod="POST">
  <input type="hidden" name="$ACTION_5:0" value="..."/>
  <input type="hidden" name="$ACTION_5:1" value="..."/>
  <input type="hidden" name="$ACTION_KEY" value="..."/>Count: <!-- -->0
</button>
```

Fiber is supposed to skip over the extra hidden inputs, but it doesn't handle this correctly if the next expected node isn't a host instance. In this case, it's a text instance.

Not sure if the proper fix is to change the HTML that is generated, or to change the hydration logic, but in this PR I've done the latter.

Changed files:
filename: packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js
patch: @@ -1216,7 +1216,15 @@ export function canHydrateTextInstance(
   if (text === '') return null;
 
   while (instance.nodeType !== TEXT_NODE) {
-    if (!inRootOrSingleton || !enableHostSingletons) {
+    if (
+      enableFormActions &&
+      instance.nodeType === ELEMENT_NODE &&
+      instance.nodeName === 'INPUT' &&
+      (instance: any).type === 'hidden'
+    ) {
+      // If we have extra hidden inputs, we don't mismatch. This allows us to
+      // embed extra form data in the original form.
+    } else if (!inRootOrSingleton || !enableHostSingletons) {
       return null;
     }
     const nextInstance = getNextHydratableSibling(instance);

filename: packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js
patch: @@ -732,4 +732,23 @@ describe('ReactDOMServerHydration', () => {
     expect(c.current.name).toBe('c');
     expect(c.current.value).toBe('C');
   });
+
+  // @gate enableFormActions
+  it('allows rendering extra hidden inputs immediately before a text instance', async () => {
+    const element = document.createElement('div');
+    element.innerHTML =
+      '<button><input name="a" value="A" type="hidden" />Click <!-- -->me</button>';
+    const button = element.firstChild;
+    const ref = React.createRef();
+    const extraText = 'me';
+
+    await act(() => {
+      ReactDOMClient.hydrateRoot(
+        element,
+        <button ref={ref}>Click {extraText}</button>,
+      );
+    });
+
+    expect(ref.current).toBe(button);
+  });
 });
Repository: huggingface/transformers
Pull request: fix torch_dtype on awq

Hi @SunMarc . The autoawq support CPU and XPU now, we should update the awq torch_dtype because CPU/XPU support both bf16/fp16. For CPU, the performance is better on bf16 in most cases.

Changed files:
filename: src/transformers/quantizers/quantizer_awq.py
patch: @@ -92,11 +92,11 @@ def update_torch_dtype(self, torch_dtype):
         if torch_dtype is None:
             torch_dtype = torch.float16
             logger.info("Loading the model in `torch.float16`. To overwrite it, set `torch_dtype` manually.")
-        elif torch_dtype == torch.bfloat16:
-            logger.warning("`torch.bfloat16` is not supported for AWQ kernels yet. Casting to `torch.float16`.")
+        elif torch_dtype == torch.bfloat16 and torch.cuda.is_available():
+            logger.warning("`torch.bfloat16` is not supported for AWQ CUDA kernels yet. Casting to `torch.float16`.")
             torch_dtype = torch.float16
-        elif torch_dtype != torch.float16:
-            logger.warning("We suggest you to set `torch_dtype=torch.float16` for better efficiency with AWQ.")
+        elif torch_dtype != torch.float16 and torch.cuda.is_available():
+            logger.warning("We suggest you to set `torch_dtype=torch.float16` for better efficiency on CUDA with AWQ.")
         return torch_dtype
 
     def _process_model_before_weight_loading(
Repository: electron/electron
Pull request: build: fix `slack-github-action` for backports

Backport of #45388

See that PR for details.


Notes: none


Changed files:
filename: .github/workflows/pull-request-labeled.yml
patch: @@ -15,12 +15,12 @@ jobs:
       - name: Trigger Slack workflow
         uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0
         with:
+          webhook: ${{ secrets.BACKPORT_REQUESTED_SLACK_WEBHOOK_URL }} 
+          webhook-type: webhook-trigger
           payload: |
             {
               "url": "${{ github.event.pull_request.html_url }}"
             }
-        env:
-          SLACK_WEBHOOK_URL: ${{ secrets.BACKPORT_REQUESTED_SLACK_WEBHOOK_URL }}
   pull-request-labeled-deprecation-review-complete:
     name: deprecation-review/complete label added
     if: github.event.label.name == 'deprecation-review/complete ✅'
Repository: huggingface/transformers
Pull request: update emu3 test

Hi @zucchini-nlp. This PR fixed:
1. The correct usage of [decode_image_tokens](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1619) because the input only supports `**kwagrs`
2. Use atol=1 to check the result to avoid numerical precision error across different devices. The pixel values are uint8, ranging from 0 to 255. atol=1 will only handle very small precision errors, which is in our expectation.

Changed files:
filename: tests/models/emu3/test_modeling_emu3.py
patch: @@ -537,7 +537,7 @@ def prefix_allowed_tokens_fn(batch_id, input_ids):
         )
         self.assertTrue(out.shape[1] == 54)
 
-        image = model.decode_image_tokens(out[:, inputs.input_ids.shape[1] :], height=HEIGHT, width=WIDTH)
+        image = model.decode_image_tokens(image_tokens=out[:, inputs.input_ids.shape[1] :], height=HEIGHT, width=WIDTH)
         images = processor.postprocess(list(image.float()), return_tensors="np")
         self.assertTrue(images["pixel_values"].shape == (3, 40, 40))
         self.assertTrue(isinstance(images["pixel_values"], np.ndarray))
@@ -548,4 +548,4 @@ def prefix_allowed_tokens_fn(batch_id, input_ids):
             repo_type="dataset",
         )
         original_pixels = np.load(filepath)
-        self.assertTrue(np.allclose(original_pixels, images["pixel_values"]))
+        self.assertTrue(np.allclose(original_pixels, images["pixel_values"], atol=1))