Skip to content

Commit

Permalink
Add vscode configurations to make development easier (#352)
Browse files Browse the repository at this point in the history
* Add vscode configurations to make development easier

* Review comment

* Fix merge conflict

* Fix permission

* Update dockerfile

* Fix username

* Review comments

* Add link

* Review edit
  • Loading branch information
Tabrizian authored Apr 16, 2024
1 parent ad4a440 commit b7a0690
Show file tree
Hide file tree
Showing 5 changed files with 171 additions and 1 deletion.
48 changes: 48 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Copyright 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

FROM nvcr.io/nvidia/tritonserver:24.03-py3

ARG USERNAME=triton-server

RUN apt-get update \
&& apt-get install -y sudo

RUN pip3 install transformers torch

# Create the user
RUN apt-get update \
&& apt-get install -y sudo \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME

RUN pip3 install pre-commit ipdb

RUN mkhomedir_helper triton-server

RUN apt-get install -y cmake rapidjson-dev

USER ${USERNAME}
26 changes: 26 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "Python Backend",

"build": {
"dockerfile": "Dockerfile"
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.vscode-pylance",
"ms-python.python",
"ms-vscode.cpptools-extension-pack",
"ms-vscode.cmake-tools",
"github.vscode-pull-request-github"
]
}
},
"postCreateCommand": "sudo chown -R triton-server:triton-server ~/.cache",

"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined", "--gpus=all", "--shm-size=2g", "--ulimit", "stack=67108864" ],
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/triton-server/.ssh,type=bind,consistency=cached",
"source=${localEnv:HOME}/.cache/huggingface,target=/home/triton-server/.cache/huggingface,type=bind,consistency=cached"
],
"remoteUser": "triton-server"
}
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/build
/.vscode
*.so
builddir

Expand Down
85 changes: 85 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Configure",
"type": "shell",
"command": "cmake",
"args": [
"-DCMAKE_INSTALL_PREFIX:STRING=/opt/tritonserver/",
"-DTRITON_COMMON_REPO_TAG:STRING=main",
"-DTRITON_BACKEND_REPO_TAG:STRING=main",
"-DTRITON_CORE_REPO_TAG:STRING=main",
"-DTRITON_ENABLE_GPU:STRING=ON",
"-DTRITON_ENABLE_NVTX:STRING=ON",
"-DCMAKE_INSTALL_PREFIX:STRING=${workspaceFolder}/build/install",
"-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE",
"-DCMAKE_BUILD_TYPE:STRING=Debug",
"-DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc",
"-DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++",
"-S${workspaceFolder}",
"-B${workspaceFolder}/build",
"-G",
"Unix Makefiles"
],
"problemMatcher": []
},
{
"label": "Build",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"/${workspaceFolder}/build",
"--config",
"Debug",
"--target",
"all",
"-j",
"18",
"--"
]
},
{
"label": "Install",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"${workspaceFolder}/build",
"--config",
"Debug",
"--target",
"install",
"-j",
"18",
"--"
]
},
{
"label": "Move",
"type": "shell",
"command": "sudo",
"args": [
"cp",
"-r",
"${workspaceFolder}/build/install/backends/python/*",
"/opt/tritonserver/backends/python"
]
},
{
"label": "Build Python Backend",
"dependsOrder": "sequence",
"dependsOn": [
"Configure",
"Build",
"Install",
"Move"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ any C++ code.
- [Custom Metrics](#custom-metrics-1)
- [Running with Inferentia](#running-with-inferentia)
- [Logging](#logging)
- [Development with VSCode](#development-with-vscode)
- [Reporting problems, asking questions](#reporting-problems-asking-questions)

## Quick Start
Expand Down Expand Up @@ -1825,6 +1826,17 @@ def initialize(self, args):
# Should print {'custom_key': {'string_value': 'custom_value'}}
```

# Development with VSCode

The repository includes a `.devcontainer` folder that contains a `Dockerfile`
and `devcontainer.json` file to help you develop the Python backend
using
[Visual Studio Code](https://code.visualstudio.com/docs/devcontainers/containers).

In order to build the backend, you can execute the "Build Python Backend" task in the
[VSCode tasks](https://code.visualstudio.com/docs/editor/tasks). This will build
the Python backend and install the artifacts in
`/opt/tritonserver/backends/python`.


# Reporting problems, asking questions
Expand Down

0 comments on commit b7a0690

Please sign in to comment.