forked from open-webui/open-webui
		
	Merge pull request #1495 from cheahjs/feat/parallelize-docker-build
feat: parallelize docker build
This commit is contained in:
		
						commit
						a85e93f1f9
					
				
					 2 changed files with 352 additions and 55 deletions
				
			
		
							
								
								
									
										341
									
								
								.github/workflows/docker-build.yaml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										341
									
								
								.github/workflows/docker-build.yaml
									
										
									
									
										vendored
									
									
								
							|  | @ -1,6 +1,5 @@ | ||||||
| name: Create and publish Docker images with specific build args | name: Create and publish Docker images with specific build args | ||||||
| 
 | 
 | ||||||
| # Configures this workflow to run every time a change is pushed to the branch called `release`. |  | ||||||
| on: | on: | ||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|   push: |   push: | ||||||
|  | @ -10,30 +9,39 @@ on: | ||||||
|     tags: |     tags: | ||||||
|       - v* |       - v* | ||||||
| 
 | 
 | ||||||
| # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. |  | ||||||
| env: | env: | ||||||
|   REGISTRY: ghcr.io |   REGISTRY: ghcr.io | ||||||
|   IMAGE_NAME: ${{ github.repository }} |   IMAGE_NAME: ${{ github.repository }} | ||||||
|  |   FULL_IMAGE_NAME: ghcr.io/${{ github.repository }} | ||||||
| 
 | 
 | ||||||
| # There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. |  | ||||||
| jobs: | jobs: | ||||||
|   build-and-push-image: |   build-main-image: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. |  | ||||||
|     permissions: |     permissions: | ||||||
|       contents: read |       contents: read | ||||||
|       packages: write |       packages: write | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         platform: | ||||||
|  |           - linux/amd64 | ||||||
|  |           - linux/arm64 | ||||||
| 
 | 
 | ||||||
|     steps: |     steps: | ||||||
|  |       - name: Prepare | ||||||
|  |         run: | | ||||||
|  |           platform=${{ matrix.platform }} | ||||||
|  |           echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|       - name: Checkout repository |       - name: Checkout repository | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|       # Required for multi architecture build | 
 | ||||||
|       - name: Set up QEMU |       - name: Set up QEMU | ||||||
|         uses: docker/setup-qemu-action@v3 |         uses: docker/setup-qemu-action@v3 | ||||||
|       # Required for multi architecture build | 
 | ||||||
|       - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|         uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|       # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. | 
 | ||||||
|       - name: Log in to the Container registry |       - name: Log in to the Container registry | ||||||
|         uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|         with: |         with: | ||||||
|  | @ -42,10 +50,10 @@ jobs: | ||||||
|           password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
| 
 | 
 | ||||||
|       - name: Extract metadata for Docker images (default latest tag) |       - name: Extract metadata for Docker images (default latest tag) | ||||||
|         id: meta-latest |         id: meta | ||||||
|         uses: docker/metadata-action@v5 |         uses: docker/metadata-action@v5 | ||||||
|         with: |         with: | ||||||
|           images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|           tags: | |           tags: | | ||||||
|             type=ref,event=branch |             type=ref,event=branch | ||||||
|             type=ref,event=tag |             type=ref,event=tag | ||||||
|  | @ -55,31 +63,320 @@ jobs: | ||||||
|           flavor: | |           flavor: | | ||||||
|             latest=${{ github.ref == 'refs/heads/main' }} |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
| 
 | 
 | ||||||
|       - name: Build and push Docker image (latest) |       - name: Build Docker image (latest) | ||||||
|         uses: docker/build-push-action@v5 |         uses: docker/build-push-action@v5 | ||||||
|  |         id: build | ||||||
|         with: |         with: | ||||||
|           context: . |           context: . | ||||||
|           push: true |           push: true | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: ${{ matrix.platform }} | ||||||
|           tags: ${{ steps.meta-latest.outputs.tags }} |           labels: ${{ steps.meta.outputs.labels }} | ||||||
|           labels: ${{ steps.meta-latest.outputs.labels }} |           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true | ||||||
|  |           cache-from: type=gha | ||||||
|  |           cache-to: type=gha,mode=max | ||||||
| 
 | 
 | ||||||
|       - name: Build and push Docker image with CUDA |       - name: Export digest | ||||||
|  |         run: | | ||||||
|  |           mkdir -p /tmp/digests | ||||||
|  |           digest="${{ steps.build.outputs.digest }}" | ||||||
|  |           touch "/tmp/digests/${digest#sha256:}" | ||||||
|  | 
 | ||||||
|  |       - name: Upload digest | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           name: digests-main-${{ env.PLATFORM_PAIR }} | ||||||
|  |           path: /tmp/digests/* | ||||||
|  |           if-no-files-found: error | ||||||
|  |           retention-days: 1 | ||||||
|  | 
 | ||||||
|  |   build-cuda-image: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     permissions: | ||||||
|  |       contents: read | ||||||
|  |       packages: write | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         platform: | ||||||
|  |           - linux/amd64 | ||||||
|  |           - linux/arm64 | ||||||
|  | 
 | ||||||
|  |     steps: | ||||||
|  |       - name: Prepare | ||||||
|  |         run: | | ||||||
|  |           platform=${{ matrix.platform }} | ||||||
|  |           echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|  |       - name: Checkout repository | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  | 
 | ||||||
|  |       - name: Set up QEMU | ||||||
|  |         uses: docker/setup-qemu-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         uses: docker/setup-buildx-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Log in to the Container registry | ||||||
|  |         uses: docker/login-action@v3 | ||||||
|  |         with: | ||||||
|  |           registry: ${{ env.REGISTRY }} | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | 
 | ||||||
|  |       - name: Extract metadata for Docker images (default latest tag) | ||||||
|  |         id: meta | ||||||
|  |         uses: docker/metadata-action@v5 | ||||||
|  |         with: | ||||||
|  |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|  |           tags: | | ||||||
|  |             type=ref,event=branch | ||||||
|  |             type=ref,event=tag | ||||||
|  |             type=sha,prefix=git- | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|  |             type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=cuda | ||||||
|  |           flavor: | | ||||||
|  |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
|  |             suffix=-cuda,onlatest=true | ||||||
|  | 
 | ||||||
|  |       - name: Build Docker image (cuda) | ||||||
|         uses: docker/build-push-action@v5 |         uses: docker/build-push-action@v5 | ||||||
|         if: github.ref == 'refs/heads/main' |         id: build | ||||||
|         with: |         with: | ||||||
|           context: . |           context: . | ||||||
|           push: true |           push: true | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: ${{ matrix.platform }} | ||||||
|           tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cuda |           labels: ${{ steps.meta.outputs.labels }} | ||||||
|  |           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true | ||||||
|  |           cache-from: type=gha | ||||||
|  |           cache-to: type=gha,mode=max | ||||||
|           build-args: USE_CUDA=true |           build-args: USE_CUDA=true | ||||||
| 
 | 
 | ||||||
|       - name: Build and push Docker image with Ollama |       - name: Export digest | ||||||
|  |         run: | | ||||||
|  |           mkdir -p /tmp/digests | ||||||
|  |           digest="${{ steps.build.outputs.digest }}" | ||||||
|  |           touch "/tmp/digests/${digest#sha256:}" | ||||||
|  | 
 | ||||||
|  |       - name: Upload digest | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           name: digests-cuda-${{ env.PLATFORM_PAIR }} | ||||||
|  |           path: /tmp/digests/* | ||||||
|  |           if-no-files-found: error | ||||||
|  |           retention-days: 1 | ||||||
|  | 
 | ||||||
|  |   build-ollama-image: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     permissions: | ||||||
|  |       contents: read | ||||||
|  |       packages: write | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         platform: | ||||||
|  |           - linux/amd64 | ||||||
|  |           - linux/arm64 | ||||||
|  | 
 | ||||||
|  |     steps: | ||||||
|  |       - name: Prepare | ||||||
|  |         run: | | ||||||
|  |           platform=${{ matrix.platform }} | ||||||
|  |           echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|  |       - name: Checkout repository | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  | 
 | ||||||
|  |       - name: Set up QEMU | ||||||
|  |         uses: docker/setup-qemu-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         uses: docker/setup-buildx-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Log in to the Container registry | ||||||
|  |         uses: docker/login-action@v3 | ||||||
|  |         with: | ||||||
|  |           registry: ${{ env.REGISTRY }} | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | 
 | ||||||
|  |       - name: Extract metadata for Docker images (ollama tag) | ||||||
|  |         id: meta | ||||||
|  |         uses: docker/metadata-action@v5 | ||||||
|  |         with: | ||||||
|  |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|  |           tags: | | ||||||
|  |             type=ref,event=branch | ||||||
|  |             type=ref,event=tag | ||||||
|  |             type=sha,prefix=git- | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|  |             type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=ollama | ||||||
|  |           flavor: | | ||||||
|  |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
|  |             suffix=-ollama,onlatest=true | ||||||
|  | 
 | ||||||
|  |       - name: Build Docker image (ollama) | ||||||
|         uses: docker/build-push-action@v5 |         uses: docker/build-push-action@v5 | ||||||
|         if: github.ref == 'refs/heads/main' |         id: build | ||||||
|         with: |         with: | ||||||
|           context: . |           context: . | ||||||
|           push: true |           push: true | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: ${{ matrix.platform }} | ||||||
|           tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:ollama |           labels: ${{ steps.meta.outputs.labels }} | ||||||
|  |           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true | ||||||
|  |           cache-from: type=gha | ||||||
|  |           cache-to: type=gha,mode=max | ||||||
|           build-args: USE_OLLAMA=true |           build-args: USE_OLLAMA=true | ||||||
|  | 
 | ||||||
|  |       - name: Export digest | ||||||
|  |         run: | | ||||||
|  |           mkdir -p /tmp/digests | ||||||
|  |           digest="${{ steps.build.outputs.digest }}" | ||||||
|  |           touch "/tmp/digests/${digest#sha256:}" | ||||||
|  | 
 | ||||||
|  |       - name: Upload digest | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           name: digests-ollama-${{ env.PLATFORM_PAIR }} | ||||||
|  |           path: /tmp/digests/* | ||||||
|  |           if-no-files-found: error | ||||||
|  |           retention-days: 1 | ||||||
|  | 
 | ||||||
|  |   merge-main-images: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     needs: [ build-main-image ] | ||||||
|  |     steps: | ||||||
|  |       - name: Download digests | ||||||
|  |         uses: actions/download-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           pattern: digests-main-* | ||||||
|  |           path: /tmp/digests | ||||||
|  |           merge-multiple: true | ||||||
|  | 
 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         uses: docker/setup-buildx-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Log in to the Container registry | ||||||
|  |         uses: docker/login-action@v3 | ||||||
|  |         with: | ||||||
|  |           registry: ${{ env.REGISTRY }} | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | 
 | ||||||
|  |       - name: Extract metadata for Docker images (default latest tag) | ||||||
|  |         id: meta | ||||||
|  |         uses: docker/metadata-action@v5 | ||||||
|  |         with: | ||||||
|  |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|  |           tags: | | ||||||
|  |             type=ref,event=branch | ||||||
|  |             type=ref,event=tag | ||||||
|  |             type=sha,prefix=git- | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|  |           flavor: | | ||||||
|  |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
|  | 
 | ||||||
|  |       - name: Create manifest list and push | ||||||
|  |         working-directory: /tmp/digests | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ | ||||||
|  |             $(printf '${{ env.FULL_IMAGE_NAME }}@sha256:%s ' *) | ||||||
|  | 
 | ||||||
|  |       - name: Inspect image | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   merge-cuda-images: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     needs: [ build-cuda-image ] | ||||||
|  |     steps: | ||||||
|  |       - name: Download digests | ||||||
|  |         uses: actions/download-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           pattern: digests-cuda-* | ||||||
|  |           path: /tmp/digests | ||||||
|  |           merge-multiple: true | ||||||
|  | 
 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         uses: docker/setup-buildx-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Log in to the Container registry | ||||||
|  |         uses: docker/login-action@v3 | ||||||
|  |         with: | ||||||
|  |           registry: ${{ env.REGISTRY }} | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | 
 | ||||||
|  |       - name: Extract metadata for Docker images (default latest tag) | ||||||
|  |         id: meta | ||||||
|  |         uses: docker/metadata-action@v5 | ||||||
|  |         with: | ||||||
|  |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|  |           tags: | | ||||||
|  |             type=ref,event=branch | ||||||
|  |             type=ref,event=tag | ||||||
|  |             type=sha,prefix=git- | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|  |           flavor: | | ||||||
|  |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
|  |             suffix=-cuda,onlatest=true | ||||||
|  | 
 | ||||||
|  |       - name: Create manifest list and push | ||||||
|  |         working-directory: /tmp/digests | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ | ||||||
|  |             $(printf '${{ env.FULL_IMAGE_NAME }}@sha256:%s ' *) | ||||||
|  | 
 | ||||||
|  |       - name: Inspect image | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }} | ||||||
|  | 
 | ||||||
|  |   merge-ollama-images: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     needs: [ build-ollama-image ] | ||||||
|  |     steps: | ||||||
|  |       - name: Download digests | ||||||
|  |         uses: actions/download-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           pattern: digests-ollama-* | ||||||
|  |           path: /tmp/digests | ||||||
|  |           merge-multiple: true | ||||||
|  | 
 | ||||||
|  |       - name: Set up Docker Buildx | ||||||
|  |         uses: docker/setup-buildx-action@v3 | ||||||
|  | 
 | ||||||
|  |       - name: Log in to the Container registry | ||||||
|  |         uses: docker/login-action@v3 | ||||||
|  |         with: | ||||||
|  |           registry: ${{ env.REGISTRY }} | ||||||
|  |           username: ${{ github.actor }} | ||||||
|  |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | 
 | ||||||
|  |       - name: Extract metadata for Docker images (default ollama tag) | ||||||
|  |         id: meta | ||||||
|  |         uses: docker/metadata-action@v5 | ||||||
|  |         with: | ||||||
|  |           images: ${{ env.FULL_IMAGE_NAME }} | ||||||
|  |           tags: | | ||||||
|  |             type=ref,event=branch | ||||||
|  |             type=ref,event=tag | ||||||
|  |             type=sha,prefix=git- | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|  |           flavor: | | ||||||
|  |             latest=${{ github.ref == 'refs/heads/main' }} | ||||||
|  |             suffix=-ollama,onlatest=true | ||||||
|  | 
 | ||||||
|  |       - name: Create manifest list and push | ||||||
|  |         working-directory: /tmp/digests | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ | ||||||
|  |             $(printf '${{ env.FULL_IMAGE_NAME }}@sha256:%s ' *) | ||||||
|  | 
 | ||||||
|  |       - name: Inspect image | ||||||
|  |         run: | | ||||||
|  |           docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }} | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								Dockerfile
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								Dockerfile
									
										
									
									
									
								
							|  | @ -12,7 +12,7 @@ ARG USE_CUDA_VER=cu121 | ||||||
| ARG USE_EMBEDDING_MODEL=all-MiniLM-L6-v2 | ARG USE_EMBEDDING_MODEL=all-MiniLM-L6-v2 | ||||||
| 
 | 
 | ||||||
| ######## WebUI frontend ######## | ######## WebUI frontend ######## | ||||||
| FROM node:21-alpine3.19 as build | FROM --platform=$BUILDPLATFORM node:21-alpine3.19 as build | ||||||
| 
 | 
 | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| 
 | 
 | ||||||
|  | @ -67,22 +67,6 @@ ENV RAG_EMBEDDING_MODEL="$USE_EMBEDDING_MODEL_DOCKER" \ | ||||||
| #### Other models ########################################################## | #### Other models ########################################################## | ||||||
| 
 | 
 | ||||||
| WORKDIR /app/backend | WORKDIR /app/backend | ||||||
| # install python dependencies |  | ||||||
| COPY ./backend/requirements.txt ./requirements.txt |  | ||||||
| 
 |  | ||||||
| RUN if [ "$USE_CUDA" = "true" ]; then \ |  | ||||||
|     # If you use CUDA the whisper and embedding modell will be downloaded on first use |  | ||||||
|     pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/$USE_CUDA_DOCKER_VER --no-cache-dir && \ |  | ||||||
|     pip3 install -r requirements.txt --no-cache-dir && \ |  | ||||||
|     python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ |  | ||||||
|     python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ |  | ||||||
|     else \ |  | ||||||
|     pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir && \ |  | ||||||
|     pip3 install -r requirements.txt --no-cache-dir && \ |  | ||||||
|     python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ |  | ||||||
|     python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ |  | ||||||
|     fi |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| RUN if [ "$USE_OLLAMA" = "true" ]; then \ | RUN if [ "$USE_OLLAMA" = "true" ]; then \ | ||||||
|         apt-get update && \ |         apt-get update && \ | ||||||
|  | @ -106,6 +90,22 @@ RUN if [ "$USE_OLLAMA" = "true" ]; then \ | ||||||
|         rm -rf /var/lib/apt/lists/*; \ |         rm -rf /var/lib/apt/lists/*; \ | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  | # install python dependencies | ||||||
|  | COPY ./backend/requirements.txt ./requirements.txt | ||||||
|  | 
 | ||||||
|  | RUN if [ "$USE_CUDA" = "true" ]; then \ | ||||||
|  |         # If you use CUDA the whisper and embedding model will be downloaded on first use | ||||||
|  |         pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/$USE_CUDA_DOCKER_VER --no-cache-dir && \ | ||||||
|  |         pip3 install -r requirements.txt --no-cache-dir && \ | ||||||
|  |         python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ | ||||||
|  |         python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ | ||||||
|  |     else \ | ||||||
|  |         pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir && \ | ||||||
|  |         pip3 install -r requirements.txt --no-cache-dir && \ | ||||||
|  |         python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])" && \ | ||||||
|  |         python -c "import os; from chromadb.utils import embedding_functions; sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=os.environ['RAG_EMBEDDING_MODEL'], device='cpu')"; \ | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # copy embedding weight from build | # copy embedding weight from build | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Jaeryang Baek
						Timothy Jaeryang Baek