forked from facebookresearch/nougat
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request facebookresearch#124 from vkehfdl1/dockerfile-api
Dockerfile for running nougat FastAPI server
- Loading branch information
Showing
2 changed files
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 | ||
# replace CUDA version to your CUDA version. | ||
# You can check your CUDA version with below. | ||
# nvcc -V | ||
|
||
RUN apt-get update | ||
RUN apt-get install -y python3 | ||
RUN apt-get -y install python3-pip git | ||
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 | ||
# replace CUDA version to your CUDA version. | ||
|
||
RUN mkdir workspace | ||
WORKDIR /workspace | ||
|
||
RUN pip3 install fastapi uvicorn[standard] fsspec[http]==2023.1.0 | ||
RUN git clone https://github.com/facebookresearch/nougat.git | ||
WORKDIR /workspace/nougat | ||
|
||
RUN python3 setup.py install | ||
|
||
EXPOSE 8503 | ||
|
||
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8503"] | ||
# Run this using 'docker run -it -d -p <YOUR PORT>:8503 --gpus all <IMAGE NAME> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
## Prerequisites | ||
Ensure you have Docker installed on your machine. | ||
And you must also have NVIDIA CUDA and CuDNN installed in your machine. | ||
|
||
Then, you must check your machine's CUDA version. | ||
```sh | ||
nvcc -V | ||
``` | ||
|
||
You must change base image name and pytorch version compatible with your **CUDA version**. | ||
|
||
## Building the Docker Image | ||
Clone this repository and navigate into the current directory(nougat/docker). You can build the Docker image by running: | ||
```sh | ||
docker build -t <image-name> . | ||
``` | ||
Replace <image-name> with a name of your choice. This will be used to refer to the image later. | ||
Please be patient as this operation can take a while. It needs to pull the CUDA-capable image from NVIDIA’s Docker repository and install several libraries. | ||
Image size will be about 17GB. | ||
|
||
|
||
## Running the Docker Container | ||
You can run your Docker container with the following command: | ||
```sh | ||
docker run -it -d -p <your-port>:8503 --gpus all <image-name> | ||
``` | ||
Replace <your-port> with the port number you wish to expose on your host machine to access the nougat API server. | ||
This can be any valid port number. Replace <image-name> with the name you chose earlier during the build step. | ||
|
||
|
||
## Testing the API Server | ||
Once the Docker container is running, you can access the nougat API server. | ||
You can easily check connection by running: | ||
```sh | ||
curl -X 'GET' \ | ||
'http://127.0.0.1:<your-port>/' | ||
``` | ||
It can be take a while for loading API server, because the server have to download nougat model at startup. | ||
|
||
If connection is successful, you can get response looks like this. | ||
``` | ||
{"status-code":200,"data":{}} | ||
``` | ||
|
||
## Using the API Server | ||
To get a prediction of a PDF file by making a POST request to `http://127.0.0.1:<your-port>/predict/`. It also accepts parameters `start` and `stop` to limit the computation to select page numbers (boundaries are included). | ||
|
||
The response is a string with the markdown text of the document. | ||
|
||
```sh | ||
curl -X 'POST' \ | ||
'http://127.0.0.1:<your-port>/predict/' \ | ||
-H 'accept: application/json' \ | ||
-H 'Content-Type: multipart/form-data' \ | ||
-F 'file=@<PDFFILE.pdf>;type=application/pdf' | ||
``` | ||
To use the limit the conversion to pages 1 to 5, use the start/stop parameters in the request URL: | ||
`http://127.0.0.1:<your-port>/predict/?start=1&stop=5` | ||
|
||
|