diff --git a/Dockerfile.tmpl b/Dockerfile.tmpl index a5e5df79..8d72c7a5 100644 --- a/Dockerfile.tmpl +++ b/Dockerfile.tmpl @@ -1,7 +1,7 @@ {{ if eq .Accelerator "gpu" }} -FROM us-docker.pkg.dev/colab-images/public/runtime:release-colab-external-images_20260514-060047_RC00 +FROM us-docker.pkg.dev/colab-images/public/runtime:release-colab-external-images_20260716-060051_RC00 {{ else }} -FROM us-docker.pkg.dev/colab-images/public/cpu-runtime:release-colab-external-images_20260514-060047_RC00 +FROM us-docker.pkg.dev/colab-images/public/cpu-runtime:release-colab-external-images_20260716-060051_RC00 {{ end}} ADD kaggle_requirements.txt /kaggle_requirements.txt @@ -82,9 +82,11 @@ RUN mkdir -p /usr/share/nltk_data && \ twitter_samples udhr2 udhr unicode_samples universal_tagset universal_treebanks_v20 \ vader_lexicon verbnet webtext word2vec_sample wordnet wordnet_ic words ycoe -RUN apt-get install -y git-lfs && \ - # vtk dependencies - apt-get install -y libgl1-mesa-glx && \ +# Don't `apt-get install git-lfs` here. The base image already ships +# git-lfs 3.7.1 built with Go 1.26, and Ubuntu's git-lfs 3.0.2 package +# overwrites it with an older build from Go 1.18. +# vtk dependencies +RUN apt-get install -y libgl1-mesa-glx && \ # xvfbwrapper dependencies apt-get install -y xvfb && \ /tmp/clean-layer.sh diff --git a/kaggle_requirements.txt b/kaggle_requirements.txt index c7eb18e5..f838ed57 100644 --- a/kaggle_requirements.txt +++ b/kaggle_requirements.txt @@ -100,6 +100,9 @@ papermill path path.py pdf2image +# The base image ships pillow 11.3; pin up to a newer release. +# Remove once the base image ships >=12.2 itself. +pillow>=12.2 plotly-express pudb pyLDAvis @@ -110,6 +113,10 @@ pyexcel-ods pymongo pypdf pytesseract +# fastprogress pulls in python-fasthtml uncapped, and 0.14.6 raised its +# floor to fastcore v2, which conflicts with the fastcore<2 pin above. +# Remove once fastcore can be unpinned. +python-fasthtml<0.14.6 python-lsp-server pytorch-ignite pytorch-lightning @@ -127,11 +134,14 @@ git+https://github.com/facebookresearch/segment-anything.git squarify tensorflow-io # Must be compatible with torch version: https://github.com/meta-pytorch/torchcodec?tab=readme-ov-file#installing-torchcodec -torchcodec==0.10.0 +torchcodec==0.11.0 torchinfo torchmetrics torchtune transformers>=5.0.0 +# The base image ships urllib3 2.5; pin up to a newer release. +# Remove once the base image ships >=2.7 itself. +urllib3>=2.7 vtk wavio xvfbwrapper diff --git a/tests/test_flax.py b/tests/test_flax.py index a420ab54..5365f7c1 100644 --- a/tests/test_flax.py +++ b/tests/test_flax.py @@ -6,7 +6,9 @@ import optax from flax import linen as nn -from flax.training import train_state +from flax.training import train_state + +from common import p100_exempt class TestFlax(unittest.TestCase): @@ -17,6 +19,12 @@ def test_pooling(self): y = nn.pooling.pool(x, 1., mul_reduce, (2, 2), (1, 1), 'VALID') np.testing.assert_allclose(y, np.full((1, 2, 2, 1), 2. ** 4)) + # cuDNN 9.19 (pulled in by torch 2.11) dropped the Pascal (sm_60) kernels from + # libcudnn_ops/cnn/adv and ships PTX for sm_121 only, so nothing can be JIT'd + # down to sm_60 either. Every cuDNN convolution engine fails on P100 with + # CUDNN_STATUS_EXECUTION_FAILED. Not fixable here: cuDNN 9.19 is a hard + # requirement of torch 2.11, which comes from the Colab base image. + @p100_exempt def test_cnn(self): class CNN(nn.Module): @nn.compact diff --git a/tests/test_keras.py b/tests/test_keras.py index 5dc4610d..0090178b 100644 --- a/tests/test_keras.py +++ b/tests/test_keras.py @@ -7,7 +7,15 @@ import keras +from common import p100_exempt + class TestKeras(unittest.TestCase): + # cuDNN 9.19 (pulled in by torch 2.11) dropped the Pascal (sm_60) kernels from + # libcudnn_ops/cnn/adv and ships PTX for sm_121 only, so nothing can be JIT'd + # down to sm_60 either. Every cuDNN convolution engine fails on P100 with + # CUDNN_STATUS_EXECUTION_FAILED. Not fixable here: cuDNN 9.19 is a hard + # requirement of torch 2.11, which comes from the Colab base image. + @p100_exempt def test_train(self): path = '/input/tests/data/mnist.npz' with np.load(path) as f: diff --git a/tests/test_keras_cv.py b/tests/test_keras_cv.py index fb5d912c..be8b1a27 100644 --- a/tests/test_keras_cv.py +++ b/tests/test_keras_cv.py @@ -4,9 +4,16 @@ import keras import numpy as np +from common import p100_exempt from utils.kagglehub import create_test_kagglehub_server class TestKerasCV(unittest.TestCase): + # cuDNN 9.19 (pulled in by torch 2.11) dropped the Pascal (sm_60) kernels from + # libcudnn_ops/cnn/adv and ships PTX for sm_121 only, so nothing can be JIT'd + # down to sm_60 either. Every cuDNN convolution engine fails on P100 with + # CUDNN_STATUS_EXECUTION_FAILED. Not fixable here: cuDNN 9.19 is a hard + # requirement of torch 2.11, which comes from the Colab base image. + @p100_exempt def test_inference(self): with create_test_kagglehub_server(): classifier = keras_cv.models.ImageClassifier.from_preset( diff --git a/tests/test_tensorflow.py b/tests/test_tensorflow.py index 8b415e25..d8fa1e79 100644 --- a/tests/test_tensorflow.py +++ b/tests/test_tensorflow.py @@ -4,7 +4,7 @@ import numpy as np import tensorflow as tf -from common import gpu_test +from common import gpu_test, p100_exempt class TestTensorflow(unittest.TestCase): @@ -46,6 +46,12 @@ def test_tf_keras(self): tf.keras.utils.plot_model(model, to_file="tf_plot_model.png") self.assertTrue(os.path.isfile("tf_plot_model.png")) + # cuDNN 9.19 (pulled in by torch 2.11) dropped the Pascal (sm_60) kernels from + # libcudnn_ops/cnn/adv and ships PTX for sm_121 only, so nothing can be JIT'd + # down to sm_60 either. CudnnRNNV3 fails on P100 with + # CUDNN_STATUS_EXECUTION_FAILED. Not fixable here: cuDNN 9.19 is a hard + # requirement of torch 2.11, which comes from the Colab base image. + @p100_exempt def test_lstm(self): x_train = np.random.random((100, 28, 28)) y_train = np.random.randint(10, size=(100, 1))