1ARG ASCEND_VERSION=8.1.RC1.alpha001-910b-openeuler22.03-py3.10
 2
 3FROM ascendai/cann:$ASCEND_VERSION AS build
 4
 5WORKDIR /app
 6
 7COPY . .
 8
 9RUN yum install -y gcc g++ cmake make openssl-devel
10ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
11ENV LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:$LIBRARY_PATH
12ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:${LD_LIBRARY_PATH}
13ENV PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe:${PYTHONPATH}
14ENV PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler/bin:${PATH}
15ENV ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME}
16ENV ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp
17ENV TOOLCHAIN_HOME=${ASCEND_TOOLKIT_HOME}/toolkit
18ENV ASCEND_HOME_PATH=${ASCEND_TOOLKIT_HOME}
19
20# find libascend_hal.so, because the drive hasn`t been mounted.
21ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/runtime/lib64/stub:$LD_LIBRARY_PATH
22
23RUN echo "Building with static libs" && \
24    source /usr/local/Ascend/ascend-toolkit/set_env.sh --force && \
25    cmake -B build -DGGML_NATIVE=OFF -DGGML_CANN=ON -DBUILD_SHARED_LIBS=OFF -DLLAMA_BUILD_TESTS=OFF  && \
26    cmake --build build --config Release --target llama-cli && \
27    cmake --build build --config Release --target llama-completion
28
29# TODO: use image with NNRT
30FROM ascendai/cann:$ASCEND_VERSION AS runtime
31COPY --from=build /app/build/bin/llama-cli /app/build/bin/llama-completion /
32
33ENV LC_ALL=C.utf8
34
35ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
36ENV LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:$LIBRARY_PATH
37ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:${LD_LIBRARY_PATH}
38ENV PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe:${PYTHONPATH}
39ENV PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler/bin:${PATH}
40ENV ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME}
41ENV ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp
42ENV TOOLCHAIN_HOME=${ASCEND_TOOLKIT_HOME}/toolkit
43ENV ASCEND_HOME_PATH=${ASCEND_TOOLKIT_HOME}
44
45ENTRYPOINT ["/llama-cli" ]