Skip to content

Commit 0646a71

Browse files
committed
[circle-mlir/infra] Revise u2204/Dockerfile
This will revise u2204/Dockerfile with - download onnx-mlir patch from github - update ONNX-MLIR and llvm-project hash - update related changes - remove not used anymore clang-format - add copyright notice ONE-DCO-1.0-Signed-off-by: SaeHie Park <saehie.park@gmail.com>
1 parent 0c55c99 commit 0646a71

File tree

1 file changed

+27
-56
lines changed

1 file changed

+27
-56
lines changed

circle-mlir/infra/docker/u2204/Dockerfile

Lines changed: 27 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
# Copyright (c) 2025 Samsung Electronics Co., Ltd. All Rights Reserved
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
115
FROM ubuntu:22.04 AS build
216

317
ENV DEBIAN_FRONTEND=noninteractive
@@ -11,14 +25,6 @@ RUN apt-get update \
1125
&& apt-get -qqy install build-essential cmake git fakeroot autoconf automake libtool unzip wget \
1226
devscripts debmake debhelper lcov
1327

14-
# Install clang-format
15-
RUN apt-get update \
16-
&& apt-get install -qqy gnupg2 \
17-
&& wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
18-
&& add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" \
19-
&& apt-get update \
20-
&& apt-get install -qqy clang-format-16
21-
2228
# additonal tools
2329
RUN apt-get update \
2430
&& apt-get -qqy install tree tmux
@@ -27,16 +33,14 @@ RUN apt-get update \
2733
RUN apt-get update \
2834
&& apt-get -qqy install python3 python3-pip python3-venv python3-dev python3-all dh-python
2935
RUN python3 -m pip install --upgrade pip setuptools
30-
RUN python3 -m pip install yapf==0.43.0 numpy==1.24.4 h5py==3.8.0 einops
36+
RUN python3 -m pip install yapf==0.43.0 numpy==2.2.4 h5py==3.8.0 einops
3137

3238
# TODO upgrade
33-
ARG VER_TORCH=2.1.0
34-
ARG VER_ONNX=1.16.0
35-
ARG VER_ONNXRUNTIME=1.18.0
39+
ARG VER_TORCH=2.6.0
40+
ARG VER_ONNX=1.17.0
41+
ARG VER_ONNXRUNTIME=1.21.0
3642

37-
RUN python3 -m pip install torch==${VER_TORCH}
38-
RUN python3 -m pip install onnx==${VER_ONNX}
39-
RUN python3 -m pip install onnxruntime==${VER_ONNXRUNTIME}
43+
RUN python3 -m pip install torch==${VER_TORCH} onnx==${VER_ONNX} onnxruntime==${VER_ONNXRUNTIME}
4044

4145
# Clean archives (to reduce image size)
4246
RUN apt-get clean -y
@@ -48,47 +52,15 @@ ARG NPROC=4
4852
ARG WORK_DIR=/workdir
4953
ARG FLATBUFFERS_HASH=a078130c
5054
ARG ABSEIL_CPP_HASH=21510581
51-
ARG LLVM_PROJECT_HASH=91088978d712cd7b33610c59f69d87d5a39e3113
52-
ARG ONNX_MLIR_HASH=40615b362fe474d6cce4fd9c31a7ec51acd8f88a
55+
ARG LLVM_PROJECT_HASH=b270525f730be6e7196667925f5a9bfa153262e9
56+
ARG ONNX_MLIR_HASH=660bd8efa664bd2d05801a7a793fe29925313b4b
5357

5458
WORKDIR ${WORK_DIR}
5559

56-
# Generate experimental patch file for onnx-mlir
57-
58-
RUN set -x \
59-
&& { \
60-
echo 'diff --git a/src/Dialect/ONNX/ONNXOps.td.inc b/src/Dialect/ONNX/ONNXOps.td.inc'; \
61-
echo 'index d75ee6b6..f63a2910 100644'; \
62-
echo '--- a/src/Dialect/ONNX/ONNXOps.td.inc'; \
63-
echo '+++ b/src/Dialect/ONNX/ONNXOps.td.inc'; \
64-
echo '@@ -1779,9 +1779,9 @@ def ONNXDequantizeLinearOp:ONNX_Op<"DequantizeLinear",'; \
65-
echo ' `zero-point` is usually not used in the case of float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz quantization,'; \
66-
echo " but the dequantization formula remains the same for consistency and 'x_scale' still determines the output type."; \
67-
echo ' }];'; \
68-
echo '- let arguments = (ins AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$x,'; \
69-
echo '+ let arguments = (ins AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$x,'; \
70-
echo ' AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>]>:$x_scale,'; \
71-
echo '- AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$x_zero_point,'; \
72-
echo '+ AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$x_zero_point,'; \
73-
echo ' DefaultValuedAttr<SI64Attr, "1">:$axis);'; \
74-
echo ' let results = (outs AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>]>:$y);'; \
75-
echo ' let extraClassDeclaration = [{'; \
76-
echo '@@ -5721,10 +5721,10 @@ def ONNXQuantizeLinearOp:ONNX_Op<"QuantizeLinear",'; \
77-
echo ' }];'; \
78-
echo ' let arguments = (ins AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>, TensorOf<[I32]>]>:$x,'; \
79-
echo ' AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>, TensorOf<[I32]>]>:$y_scale,'; \
80-
echo '- AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$y_zero_point,'; \
81-
echo '+ AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$y_zero_point,'; \
82-
echo ' DefaultValuedAttr<SI64Attr, "1">:$axis,'; \
83-
echo ' DefaultValuedAttr<SI64Attr, "1">:$saturate);'; \
84-
echo '- let results = (outs AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$y);'; \
85-
echo '+ let results = (outs AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$y);'; \
86-
echo ' let extraClassDeclaration = [{'; \
87-
echo ' static int getNumberOfOperands() {'; \
88-
echo ' return 3;'; \
89-
echo ''; \
90-
} > ${WORK_DIR}/onnx_quantdequant_i16.patch \
91-
&& cat ${WORK_DIR}/onnx_quantdequant_i16.patch
60+
# Download experimental patch file for onnx-mlir
61+
62+
RUN wget https://raw.githubusercontent.com/Samsung/ONE/refs/heads/master/circle-mlir/externals/onnx_mlir_0_5_0_0.diff \
63+
-O ${WORK_DIR}/onnx_mlir_0_5_0_0.diff
9264

9365
# FLATBUFFERS build from source
9466
RUN git clone --recursive https://github.com/google/flatbuffers.git \
@@ -165,9 +137,9 @@ RUN mkdir llvm-project-build && cd llvm-project-build \
165137
RUN cd llvm-project-build && cmake --build . && cmake --install .
166138

167139
# ONNX-MLIR build from source
168-
# Patch to accept INT16 for QuantizeLinear/DequantizeLinear
140+
# Patch to accept INT16 for QuantizeLinear/DequantizeLinear and fix ONNX passes
169141
RUN cd onnx-mlir \
170-
&& patch -p1 < ${WORK_DIR}/onnx_quantdequant_i16.patch
142+
&& patch -p1 < ${WORK_DIR}/onnx_mlir_0_5_0_0.diff
171143

172144
RUN mkdir onnx-mlir-build && cd onnx-mlir-build \
173145
&& cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WORK_DIR} \
@@ -176,7 +148,6 @@ RUN mkdir onnx-mlir-build && cd onnx-mlir-build \
176148
-DCMAKE_JOB_POOL_COMPILE:STRING=compile -DCMAKE_JOB_POOL_LINK:STRING=link \
177149
-DCMAKE_JOB_POOLS:STRING='compile=4;link=1' \
178150
-DONNX_MLIR_BUILD_TESTS=OFF -DONNX_MLIR_ENABLE_MHLO=OFF -DLLVM_ENABLE_ASSERTIONS=ON \
179-
-DONNX_MLIR_DECOMP_ONNX_CONVTRANSPOSE=OFF \
180151
../onnx-mlir
181152

182153
RUN cd onnx-mlir-build && cmake --build . && cmake --install .

0 commit comments

Comments
 (0)