mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	docker : update CUDA images (#9213)
This commit is contained in:
		| @@ -1,18 +1,16 @@ | |||||||
| ARG UBUNTU_VERSION=22.04 | ARG UBUNTU_VERSION=22.04 | ||||||
|  |  | ||||||
| # This needs to generally match the container host's environment. | # This needs to generally match the container host's environment. | ||||||
| ARG CUDA_VERSION=11.7.1 | ARG CUDA_VERSION=12.6.0 | ||||||
|  |  | ||||||
| # Target the CUDA build image | # Target the CUDA build image | ||||||
| ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ||||||
|  |  | ||||||
| FROM ${BASE_CUDA_DEV_CONTAINER} AS build | FROM ${BASE_CUDA_DEV_CONTAINER} AS build | ||||||
|  |  | ||||||
| # Unless otherwise specified, we make a fat build. | # CUDA architecture to build for (defaults to all supported archs) | ||||||
| ARG CUDA_DOCKER_ARCH=all | ARG CUDA_DOCKER_ARCH=default | ||||||
|  |  | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|     apt-get install -y build-essential python3 python3-pip git libcurl4-openssl-dev libgomp1 |     apt-get install -y build-essential cmake python3 python3-pip git libcurl4-openssl-dev libgomp1 | ||||||
|  |  | ||||||
| COPY requirements.txt   requirements.txt | COPY requirements.txt   requirements.txt | ||||||
| COPY requirements       requirements | COPY requirements       requirements | ||||||
| @@ -24,13 +22,12 @@ WORKDIR /app | |||||||
|  |  | ||||||
| COPY . . | COPY . . | ||||||
|  |  | ||||||
| # Set nvcc architecture | # Use the default CUDA archs if not specified | ||||||
| ENV CUDA_DOCKER_ARCH=${CUDA_DOCKER_ARCH} | RUN if [ "${CUDA_DOCKER_ARCH}" != "default" ]; then \ | ||||||
| # Enable CUDA |         export CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=${CUDA_DOCKER_ARCH}"; \ | ||||||
| ENV GGML_CUDA=1 |     fi && \ | ||||||
| # Enable cURL |     cmake -B build -DGGML_CUDA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \ | ||||||
| ENV LLAMA_CURL=1 |     cmake --build build --config Release --target llama-cli -j$(nproc) && \ | ||||||
|  |     cp build/bin/* . | ||||||
| RUN make -j$(nproc) |  | ||||||
|  |  | ||||||
| ENTRYPOINT ["/app/.devops/tools.sh"] | ENTRYPOINT ["/app/.devops/tools.sh"] | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| ARG UBUNTU_VERSION=22.04 | ARG UBUNTU_VERSION=22.04 | ||||||
| # This needs to generally match the container host's environment. | # This needs to generally match the container host's environment. | ||||||
| ARG CUDA_VERSION=11.7.1 | ARG CUDA_VERSION=12.6.0 | ||||||
| # Target the CUDA build image | # Target the CUDA build image | ||||||
| ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ||||||
| # Target the CUDA runtime image | # Target the CUDA runtime image | ||||||
| @@ -8,28 +8,30 @@ ARG BASE_CUDA_RUN_CONTAINER=nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_V | |||||||
|  |  | ||||||
| FROM ${BASE_CUDA_DEV_CONTAINER} AS build | FROM ${BASE_CUDA_DEV_CONTAINER} AS build | ||||||
|  |  | ||||||
| # Unless otherwise specified, we make a fat build. | # CUDA architecture to build for (defaults to all supported archs) | ||||||
| ARG CUDA_DOCKER_ARCH=all | ARG CUDA_DOCKER_ARCH=default | ||||||
|  |  | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|     apt-get install -y build-essential git |     apt-get install -y build-essential git cmake | ||||||
|  |  | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
|  |  | ||||||
| COPY . . | COPY . . | ||||||
|  |  | ||||||
| # Set nvcc architecture | # Use the default CUDA archs if not specified | ||||||
| ENV CUDA_DOCKER_ARCH=${CUDA_DOCKER_ARCH} | RUN if [ "${CUDA_DOCKER_ARCH}" != "default" ]; then \ | ||||||
| # Enable CUDA |         export CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=${CUDA_DOCKER_ARCH}"; \ | ||||||
| ENV GGML_CUDA=1 |     fi && \ | ||||||
|  |     cmake -B build -DGGML_CUDA=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \ | ||||||
| RUN make -j$(nproc) llama-cli |     cmake --build build --config Release --target llama-cli -j$(nproc) | ||||||
|  |  | ||||||
| FROM ${BASE_CUDA_RUN_CONTAINER} AS runtime | FROM ${BASE_CUDA_RUN_CONTAINER} AS runtime | ||||||
|  |  | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|     apt-get install -y libgomp1 |     apt-get install -y libgomp1 | ||||||
|  |  | ||||||
| COPY --from=build /app/llama-cli /llama-cli | COPY --from=build /app/build/ggml/src/libggml.so /libggml.so | ||||||
|  | COPY --from=build /app/build/src/libllama.so /libllama.so | ||||||
|  | COPY --from=build /app/build/bin/llama-cli /llama-cli | ||||||
|  |  | ||||||
| ENTRYPOINT [ "/llama-cli" ] | ENTRYPOINT [ "/llama-cli" ] | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| ARG UBUNTU_VERSION=22.04 | ARG UBUNTU_VERSION=22.04 | ||||||
| # This needs to generally match the container host's environment. | # This needs to generally match the container host's environment. | ||||||
| ARG CUDA_VERSION=11.7.1 | ARG CUDA_VERSION=12.6.0 | ||||||
| # Target the CUDA build image | # Target the CUDA build image | ||||||
| ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} | ||||||
| # Target the CUDA runtime image | # Target the CUDA runtime image | ||||||
| @@ -8,33 +8,34 @@ ARG BASE_CUDA_RUN_CONTAINER=nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_V | |||||||
|  |  | ||||||
| FROM ${BASE_CUDA_DEV_CONTAINER} AS build | FROM ${BASE_CUDA_DEV_CONTAINER} AS build | ||||||
|  |  | ||||||
| # Unless otherwise specified, we make a fat build. | # CUDA architecture to build for (defaults to all supported archs) | ||||||
| ARG CUDA_DOCKER_ARCH=all | ARG CUDA_DOCKER_ARCH=default | ||||||
|  |  | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|     apt-get install -y build-essential git libcurl4-openssl-dev |     apt-get install -y build-essential git cmake libcurl4-openssl-dev | ||||||
|  |  | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
|  |  | ||||||
| COPY . . | COPY . . | ||||||
|  |  | ||||||
| # Set nvcc architecture | # Use the default CUDA archs if not specified | ||||||
| ENV CUDA_DOCKER_ARCH=${CUDA_DOCKER_ARCH} | RUN if [ "${CUDA_DOCKER_ARCH}" != "default" ]; then \ | ||||||
| # Enable CUDA |         export CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=${CUDA_DOCKER_ARCH}"; \ | ||||||
| ENV GGML_CUDA=1 |     fi && \ | ||||||
| # Enable cURL |     cmake -B build -DGGML_CUDA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \ | ||||||
| ENV LLAMA_CURL=1 |     cmake --build build --config Release --target llama-server -j$(nproc) | ||||||
| # Must be set to 0.0.0.0 so it can listen to requests from host machine |  | ||||||
| ENV LLAMA_ARG_HOST=0.0.0.0 |  | ||||||
|  |  | ||||||
| RUN make -j$(nproc) llama-server |  | ||||||
|  |  | ||||||
| FROM ${BASE_CUDA_RUN_CONTAINER} AS runtime | FROM ${BASE_CUDA_RUN_CONTAINER} AS runtime | ||||||
|  |  | ||||||
| RUN apt-get update && \ | RUN apt-get update && \ | ||||||
|     apt-get install -y libcurl4-openssl-dev libgomp1 curl |     apt-get install -y libcurl4-openssl-dev libgomp1 curl | ||||||
|  |  | ||||||
| COPY --from=build /app/llama-server /llama-server | COPY --from=build /app/build/ggml/src/libggml.so /libggml.so | ||||||
|  | COPY --from=build /app/build/src/libllama.so /libllama.so | ||||||
|  | COPY --from=build /app/build/bin/llama-server /llama-server | ||||||
|  |  | ||||||
|  | # Must be set to 0.0.0.0 so it can listen to requests from host machine | ||||||
|  | ENV LLAMA_ARG_HOST=0.0.0.0 | ||||||
|  |  | ||||||
| HEALTHCHECK CMD [ "curl", "-f", "http://localhost:8080/health" ] | HEALTHCHECK CMD [ "curl", "-f", "http://localhost:8080/health" ] | ||||||
|  |  | ||||||
|   | |||||||
| @@ -66,8 +66,8 @@ You may want to pass in some different `ARGS`, depending on the CUDA environment | |||||||
|  |  | ||||||
| The defaults are: | The defaults are: | ||||||
|  |  | ||||||
| - `CUDA_VERSION` set to `11.7.1` | - `CUDA_VERSION` set to `12.6.0` | ||||||
| - `CUDA_DOCKER_ARCH` set to `all` | - `CUDA_DOCKER_ARCH` set to the cmake build default, which includes all the supported architectures | ||||||
|  |  | ||||||
| The resulting images, are essentially the same as the non-CUDA images: | The resulting images, are essentially the same as the non-CUDA images: | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 slaren
					slaren