# default base image
ARG BASE_IMAGE="public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.19.1-ubuntu20.04"

FROM $BASE_IMAGE

RUN echo "Base image is $BASE_IMAGE"

# Install some basic utilities
RUN apt-get update && apt-get install python3 python3-pip -y

### Mount Point ###
# When launching the container, mount the code directory to /app
ARG APP_MOUNT=/app
VOLUME [ ${APP_MOUNT} ]
WORKDIR ${APP_MOUNT}

RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --no-cache-dir fastapi ninja tokenizers pandas
RUN python3 -m pip install sentencepiece transformers==4.36.2 -U
RUN python3 -m pip install transformers-neuronx --extra-index-url=https://pip.repos.neuron.amazonaws.com -U
RUN python3 -m pip install --pre neuronx-cc==2.12.* --extra-index-url=https://pip.repos.neuron.amazonaws.com -U

COPY ./aphrodite /app/aphrodite-engine/aphrodite
COPY ./setup.py /app/aphrodite-engine/setup.py
COPY ./requirements-common.txt /app/aphrodite-engine/requirements-common.txt
COPY ./requirements-neuron.txt /app/aphrodite-engine/requirements-neuron.txt

RUN cd /app/aphrodite-engine \
    && python3 -m pip install -U -r requirements-neuron.txt

ENV APHRODITE_TARGET_DEVICE="neuron"
RUN cd /app/aphrodite-engine \
    && pip install -e . \
    && cd ..

RUN pip install triton

CMD ["/bin/bash"]
