mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-03-12 17:05:38 +00:00
118 lines
4.4 KiB
Docker
118 lines
4.4 KiB
Docker
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
# hadolint global ignore=DL3003,DL3008,DL3009,DL3059
|
|
|
|
FROM mcr.microsoft.com/devcontainers/rust:1-1-bullseye@sha256:ddc1ee022d327f024c07484c9333db3fbbfd504bc096cdb66635653a2bebb33e
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ENV TZ=Asian/Shanghai
|
|
|
|
# hadolint ignore=DL3009
|
|
RUN apt-get update \
|
|
&& apt-get upgrade -y \
|
|
&& apt-get install -y --no-install-recommends cmake
|
|
|
|
RUN rustup target add wasm32-wasip1
|
|
|
|
#
|
|
# Openvino
|
|
# Refer to
|
|
# - https://docs.openvino.ai/2022.3/openvino_docs_install_guides_installing_openvino_from_archive_linux.html
|
|
# - https://docs.openvino.ai/2023.3/openvino_docs_install_guides_installing_openvino_from_archive_linux.html
|
|
# - https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-archive-linux.html
|
|
#
|
|
RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
RUN apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
|
|
&& echo "deb https://apt.repos.intel.com/openvino/2023 ubuntu20 main" | tee /etc/apt/sources.list.d/intel-openvino-2023.list
|
|
RUN apt-get update \
|
|
&& apt-get upgrade -y \
|
|
&& apt-get install --no-install-recommends -y openvino-2023.2.0
|
|
|
|
#
|
|
# wasi-nn
|
|
# compilation requirements
|
|
WORKDIR /workspaces/wasi-nn
|
|
RUN git clone --depth 1 https://github.com/bytecodealliance/wasi-nn.git .
|
|
|
|
WORKDIR /workspaces/wasi-nn/rust/examples/classification-example/
|
|
RUN cargo build --target=wasm32-wasip1
|
|
|
|
WORKDIR /workspaces/wasi-nn/rust/examples/classification-example/build
|
|
RUN cp ../target/wasm32-wasip1/debug/wasi-nn-example.wasm . \
|
|
&& wget -q --no-clobber https://github.com/intel/openvino-rs/raw/main/crates/openvino/tests/fixtures/mobilenet/mobilenet.xml \
|
|
&& wget -q --no-clobber https://github.com/intel/openvino-rs/raw/main/crates/openvino/tests/fixtures/mobilenet/mobilenet.bin
|
|
# There are model files(mobilenet*) and wasm files(wasi-nn-example.wasm) in the directory,
|
|
# /workspaces/wasi-nn/rust/examples/classification-example/build
|
|
|
|
#
|
|
# wasmedge
|
|
WORKDIR /tmp
|
|
RUN wget -q https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh \
|
|
&& chmod a+x ./install.sh
|
|
# RUN ./install.sh -p /opt/wasmedge --plugins wasi_nn-tensorflowlite wasi_nn-openvino
|
|
RUN ./install.sh -r yes -D -p /opt/wasmedge --plugins wasi_nn-openvino --dist ubuntu20.04 \
|
|
&& /opt/wasmedge/bin/wasmedge --version
|
|
ENV PATH=/opt/wasmedge/bin:${PATH}
|
|
# ENV WASMEDGE_LIB_DIR=/opt/wasmedge/lib
|
|
|
|
#
|
|
# wasmedge-wasinn-examples
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples
|
|
RUN git clone --depth 1 https://github.com/second-state/WasmEdge-WASINN-examples.git .
|
|
COPY core/iwasm/libraries/wasi-nn/test/bump_wasi_nn_to_0_6_0.patch .
|
|
RUN git apply ./bump_wasi_nn_to_0_6_0.patch
|
|
|
|
# recompile with wasi-nn 0.6.0
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples/openvino-mobilenet-image/
|
|
RUN pushd rust \
|
|
&& cargo build --target=wasm32-wasip1 \
|
|
&& popd \
|
|
&& ./download_mobilenet.sh . \
|
|
&& ls -l mobilenet.xml mobilenet.bin
|
|
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples/openvino-mobilenet-raw/
|
|
RUN pushd rust \
|
|
&& cargo build --target=wasm32-wasip1 \
|
|
&& popd \
|
|
&& ./download_mobilenet.sh . \
|
|
&& ls -l mobilenet.xml mobilenet.bin tensor-1x224x224x3-f32.bgr
|
|
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples/openvino-road-segmentation-adas/
|
|
RUN pushd openvino-road-seg-adas \
|
|
&& cargo build --target=wasm32-wasip1
|
|
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples/tflite-birds_v1-image/
|
|
RUN pushd rust \
|
|
&& cargo build --target=wasm32-wasip1
|
|
|
|
# mount models when running
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples/wasmedge-ggml/qwen
|
|
RUN wget --progress=dot:giga https://www.modelscope.cn/models/qwen/Qwen1.5-0.5B-Chat-GGUF/resolve/master/qwen1_5-0_5b-chat-q2_k.gguf
|
|
RUN cargo build --target=wasm32-wasip1
|
|
|
|
#
|
|
# iwasm. build from source
|
|
WORKDIR /workspaces/wamr
|
|
COPY . .
|
|
|
|
WORKDIR /workspaces/wamr/product-mini/platforms/linux
|
|
|
|
RUN OpenVINO_DIR=/usr/lib/openvino-2023.2.0 \
|
|
cmake -S . -B build \
|
|
-DWAMR_BUILD_WASI_NN=1 -DWAMR_BUILD_WASI_EPHEMERAL_NN=1 \
|
|
-DWAMR_BUILD_WASI_NN_OPENVINO=1 \
|
|
-DWAMR_BUILD_WASI_NN_TFLITE=1 \
|
|
-DWAMR_BUILD_WASI_NN_LLAMACPP=1 \
|
|
&& cmake --build build \
|
|
&& cmake --install build
|
|
|
|
ENV LD_LIBRARY_PATH=/usr/local/lib
|
|
|
|
# add smoke test script
|
|
COPY core/iwasm/libraries/wasi-nn/test/run_smoke_test.py /
|
|
|
|
WORKDIR /workspaces/wasmedge-wasinn-examples
|
|
CMD ["python3", "/run_smoke_test.py"]
|