Merge branch 'main' into feat/llama3.1

# Conflicts:
#	Dockerfile.external
#	Dockerfile.local
This commit is contained in:
Javier Martinez 2024-07-31 12:48:32 +02:00
commit f3ee5f8e66
No known key found for this signature in database
4 changed files with 48 additions and 22 deletions

View file

@ -14,27 +14,38 @@ FROM base as dependencies
WORKDIR /home/worker/app WORKDIR /home/worker/app
COPY pyproject.toml poetry.lock ./ COPY pyproject.toml poetry.lock ./
RUN poetry install --extras "ui vector-stores-qdrant llms-ollama embeddings-ollama" ARG POETRY_EXTRAS="ui vector-stores-qdrant llms-ollama embeddings-ollama"
RUN poetry install --no-root --extras "${POETRY_EXTRAS}"
FROM base as app FROM base as app
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV PORT=8080 ENV PORT=8080
ENV APP_ENV=prod
ENV PYTHONPATH="$PYTHONPATH:/home/worker/app/private_gpt/"
EXPOSE 8080 EXPOSE 8080
# Prepare a non-root user # Prepare a non-root user
RUN adduser --system worker # More info about how to configure UIDs and GIDs in Docker:
# https://github.com/systemd/systemd/blob/main/docs/UIDS-GIDS.md
# Define the User ID (UID) for the non-root user
# UID 100 is chosen to avoid conflicts with existing system users
ARG UID=100
# Define the Group ID (GID) for the non-root user
# GID 65534 is often used for the 'nogroup' or 'nobody' group
ARG GID=65534
RUN adduser --system --gid ${GID} --uid ${UID} --home /home/worker worker
WORKDIR /home/worker/app WORKDIR /home/worker/app
RUN mkdir local_data; chown worker local_data RUN chown worker /home/worker/app
RUN mkdir models; chown worker models RUN mkdir local_data && chown worker local_data
RUN mkdir models && chown worker models
COPY --chown=worker --from=dependencies /home/worker/app/.venv/ .venv COPY --chown=worker --from=dependencies /home/worker/app/.venv/ .venv
COPY --chown=worker private_gpt/ private_gpt COPY --chown=worker private_gpt/ private_gpt
COPY --chown=worker fern/ fern COPY --chown=worker *.yaml .
COPY --chown=worker *.yaml *.md ./
COPY --chown=worker scripts/ scripts COPY --chown=worker scripts/ scripts
ENV PYTHONPATH="$PYTHONPATH:/private_gpt/"
USER worker USER worker
ENTRYPOINT python -m private_gpt ENTRYPOINT python -m private_gpt

View file

@ -24,28 +24,39 @@ FROM base as dependencies
WORKDIR /home/worker/app WORKDIR /home/worker/app
COPY pyproject.toml poetry.lock ./ COPY pyproject.toml poetry.lock ./
RUN poetry install --extras "ui embeddings-huggingface llms-llama-cpp vector-stores-qdrant" ARG POETRY_EXTRAS="ui embeddings-huggingface llms-llama-cpp vector-stores-qdrant"
RUN poetry install --no-root --extras "${POETRY_EXTRAS}"
FROM base as app FROM base as app
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV PORT=8080 ENV PORT=8080
ENV APP_ENV=prod
ENV PYTHONPATH="$PYTHONPATH:/home/worker/app/private_gpt/"
EXPOSE 8080 EXPOSE 8080
# Prepare a non-root user # Prepare a non-root user
RUN adduser --group worker # More info about how to configure UIDs and GIDs in Docker:
RUN adduser --system --ingroup worker worker # https://github.com/systemd/systemd/blob/main/docs/UIDS-GIDS.md
# Define the User ID (UID) for the non-root user
# UID 100 is chosen to avoid conflicts with existing system users
ARG UID=100
# Define the Group ID (GID) for the non-root user
# GID 65534 is often used for the 'nogroup' or 'nobody' group
ARG GID=65534
RUN adduser --system --gid ${GID} --uid ${UID} --home /home/worker worker
WORKDIR /home/worker/app WORKDIR /home/worker/app
RUN mkdir local_data; chown worker local_data RUN chown worker /home/worker/app
RUN mkdir models; chown worker models RUN mkdir local_data && chown worker local_data
RUN mkdir models && chown worker models
COPY --chown=worker --from=dependencies /home/worker/app/.venv/ .venv COPY --chown=worker --from=dependencies /home/worker/app/.venv/ .venv
COPY --chown=worker private_gpt/ private_gpt COPY --chown=worker private_gpt/ private_gpt
COPY --chown=worker fern/ fern COPY --chown=worker *.yaml ./
COPY --chown=worker *.yaml *.md ./
COPY --chown=worker scripts/ scripts COPY --chown=worker scripts/ scripts
ENV PYTHONPATH="$PYTHONPATH:/private_gpt/"
USER worker USER worker
ENTRYPOINT python -m private_gpt ENTRYPOINT python -m private_gpt

View file

@ -5,12 +5,15 @@ services:
volumes: volumes:
- ./local_data/:/home/worker/app/local_data - ./local_data/:/home/worker/app/local_data
ports: ports:
- 8001:8080 - 8001:8001
environment: environment:
PORT: 8080 PORT: 8001
PGPT_PROFILES: docker PGPT_PROFILES: docker
PGPT_MODE: ollama PGPT_MODE: ollama
PGPT_EMBED_MODE: ollama
ollama: ollama:
image: ollama/ollama:latest image: ollama/ollama:latest
ports:
- 11434:11434
volumes: volumes:
- ./models:/root/.ollama - ./models:/root/.ollama

View file

@ -6,7 +6,7 @@ llm:
mode: ${PGPT_MODE:mock} mode: ${PGPT_MODE:mock}
embedding: embedding:
mode: ${PGPT_MODE:sagemaker} mode: ${PGPT_EMBED_MODE:mock}
llamacpp: llamacpp:
llm_hf_repo_id: ${PGPT_HF_REPO_ID:lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF} llm_hf_repo_id: ${PGPT_HF_REPO_ID:lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF}
@ -30,6 +30,7 @@ ollama:
repeat_last_n: ${PGPT_OLLAMA_REPEAT_LAST_N:64} repeat_last_n: ${PGPT_OLLAMA_REPEAT_LAST_N:64}
repeat_penalty: ${PGPT_OLLAMA_REPEAT_PENALTY:1.2} repeat_penalty: ${PGPT_OLLAMA_REPEAT_PENALTY:1.2}
request_timeout: ${PGPT_OLLAMA_REQUEST_TIMEOUT:600.0} request_timeout: ${PGPT_OLLAMA_REQUEST_TIMEOUT:600.0}
autopull_models: ${PGPT_OLLAMA_AUTOPULL_MODELS:true}
ui: ui:
enabled: true enabled: true