|
| 1 | +# Manual Setup |
| 2 | + |
| 3 | +## SILNLP Prerequisites |
| 4 | +These are the main requirements for the SILNLP code to run on a local machine. The SILNLP repo itself is hosted on Github, mainly written in Python and calls SIL.Machine.Tool. 'Machine' as we tend to call it, is a .NET application that has many functions for manipulating USFM data. Most of the language data we have for low resource languages in USFM format. Since Machine is a .Net application it depends upon the __.NET core SDK__ which works on Windows and Linux. Since there are many python packages that need to be used, with complex versioning requirements we use a Python package called Poetry to mangage all of those. So here is a rough heirarchy of SILNLP with the major dependencies. |
| 5 | + |
| 6 | +| Requirement | Reason | |
| 7 | +| --------------------- | ----------------------------------------------------------------- | |
| 8 | +| GIT | to get the repo from [github](https://github.com/sillsdev/silnlp) | |
| 9 | +| Python | to run the silnlp code | |
| 10 | +| Poetry | to manage all the Python packages and versions | |
| 11 | +| SIL.Machine.Tool | to support many functions for data manipulation | |
| 12 | +| .Net core SDK | Required by SIL.Machine.Tool | |
| 13 | +| NVIDIA GPU | Required to run on a local machine | |
| 14 | +| Nvidia drivers | Required for the GPU | |
| 15 | +| CUDA Toolkit | Required for the Machine learning with the GPU | |
| 16 | +| Environment variables | To tell SILNLP where to find the data, etc. | |
| 17 | + |
| 18 | +## Setup |
| 19 | + |
| 20 | +The SILNLP code can be run on either Windows or Linux operating systems. If using an Ubuntu distribution, the only compatible version is 20.04. |
| 21 | + |
| 22 | +__Download and install__ the following before creating any projects or starting any code, preferably in this order to avoid most warnings: |
| 23 | + |
| 24 | +1. If using a local GPU: [NVIDIA driver](https://www.nvidia.com/download/index.aspx) |
| 25 | + * On Ubuntu, the driver can alternatively be installed through the GUI by opening Software & Updates, navigating to Additional Drivers in the top menu, and selecting the newest NVIDIA driver with the labels proprietary and tested. |
| 26 | + * After installing the driver, reboot your system. |
| 27 | +2. [Git](https://git-scm.com/downloads) |
| 28 | +3. [Python 3.8](https://www.python.org/downloads/) (latest minor version, ie 3.8.19) |
| 29 | + * Can alternatively install Python using [miniconda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html) if you're planning to use more than one version of Python. If following this method, activate your conda environment before installing Poetry. |
| 30 | +4. [Poetry](https://python-poetry.org/docs/#installation) |
| 31 | + * Note that whether the command should call python or python3 depends on which is required on your machine. |
| 32 | + * It may (or may not) be possible to run the curl command within a VS Code terminal. If that causes permission errors close VS Code and try it in an elevated CMD prompt. |
| 33 | + |
| 34 | + Windows: |
| 35 | + At an administrator CMD prompt or a terminal within VS Code run: |
| 36 | + ``` |
| 37 | + curl -sSL https://install.python-poetry.org | python - --version 1.7.1 |
| 38 | + ``` |
| 39 | + In Powershell, run: |
| 40 | + ``` |
| 41 | + (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python |
| 42 | + ``` |
| 43 | +
|
| 44 | + Linux: |
| 45 | + In terminal, run: |
| 46 | + ``` |
| 47 | + curl -sSL https://install.python-poetry.org | python3 - --version 1.7.1 |
| 48 | + ``` |
| 49 | + Add the following line to your .bashrc file in your home directory: |
| 50 | + ``` |
| 51 | + export PATH="$HOME/.local/bin:$PATH" |
| 52 | + ``` |
| 53 | +5. .NET Core SDK |
| 54 | + * The necessary versions are 7.0 and 3.1. If your machine is only able to install version 7.0, you can set the DOTNET_ROLL_FORWARD environment variable to "LatestMajor", which will allow you to run anything that depends on dotnet 3.1. |
| 55 | + * Note - the .NET SDK is needed for [SIL.Machine.Tool](https://github.com/sillsdev/machine). Many of the scripts in this repo require this .Net package. The .Net package will be installed and updated when the silnlp is initialized in `__init__.py`. |
| 56 | + * Windows: [.NET Core SDK](https://dotnet.microsoft.com/download) |
| 57 | + * Linux: Installation instructions can be found [here](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-2004) |
| 58 | +6. C++ Redistributable |
| 59 | + * Note - this may already be installed. If it is not installed you may get cryptic errors such as "System.DllNotFoundException: Unable to load DLL 'thot' or one of its dependencies" |
| 60 | + * Windows: Download from https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0 and install |
| 61 | + * Linux: Instead of installing the redistributable, run the following commands: |
| 62 | + ``` |
| 63 | + sudo apt-get update |
| 64 | + sudo apt-get install build-essential gdb |
| 65 | + ``` |
| 66 | +
|
| 67 | +### Visual Studio Code setup |
| 68 | +
|
| 69 | +1. Install Visual Studio Code |
| 70 | +2. Install Python extension for VS Code |
| 71 | +3. Open up silnlp folder in VSC |
| 72 | +4. In CMD window, type `poetry install` to create the virtual environment for silnlp |
| 73 | + * If using conda, activate your conda environment first before `poetry install`. Poetry will then install all the dependencies into the conda environment. |
| 74 | +5. Choose the newly created virtual environment as the "Python Interpreter" in the command palette (ctrl+shift+P) |
| 75 | + * If using conda, choose the conda environment as the interpreter |
| 76 | +6. Open the command palette and select "Preferences: Open User Settings (JSON)". In the `settings.json` file, add the following options: |
| 77 | + ``` json |
| 78 | + "python.formatting.provider": "black", |
| 79 | + "python.linting.pylintEnabled": true, |
| 80 | + "editor.formatOnSave": true, |
| 81 | + ``` |
| 82 | + |
| 83 | +### S3 bucket setup |
| 84 | + |
| 85 | +See [S3 bucket setup](s3_bucket_setup.md). |
| 86 | + |
| 87 | +### ClearML setup |
| 88 | + |
| 89 | +See [ClearML setup](clear_ml_setup.md). |
| 90 | + |
| 91 | +### Additional Environment Variables |
| 92 | +Set the following environment variables with your respective credentials: CLEARML_API_ACCESS_KEY, CLEARML_API_SECRET_KEY, AWS_ACCESS_KEY_ID, and AWS_SECRET_ACCESS_KEY |
| 93 | +* Windows users: see [here](https://github.com/sillsdev/silnlp/wiki/Install-silnlp-on-Windows-10#permanently-set-environment-variables) for instructions on setting environment variables permanently |
| 94 | +* Linux users: To set environment variables permanently, add each variable as a new line to the `.bashrc` file in your home directory with the format |
| 95 | + ``` |
| 96 | + export VAR="VAL" |
| 97 | + ``` |
| 98 | + |
| 99 | +### Setting Up and Running Experiments |
| 100 | + |
| 101 | +See the [wiki](https://github.com/sillsdev/silnlp/wiki) for information on setting up and running experiments. The most important pages for getting started are the ones on [file structure](https://github.com/sillsdev/silnlp/wiki/Folder-structure-and-file-naming-conventions), [model configuration](https://github.com/sillsdev/silnlp/wiki/Configure-a-model), and [running experiments](https://github.com/sillsdev/silnlp/wiki/NMT:-Usage). A lot of the instructions are specific to NMT, but are still helpful starting points for doing other things like [alignment](https://github.com/sillsdev/silnlp/wiki/Alignment:-Usage). |
| 102 | + |
| 103 | +See [this](https://github.com/sillsdev/silnlp/wiki/Using-the-Python-Debugger) page for information on using the VS code debugger. |
| 104 | + |
| 105 | +If you need to use a tool that is supported by SILNLP but is not installable as a Python library (which is probably the case if you get an error like "RuntimeError: eflomal is not installed."), follow the appropriate instructions [here](https://github.com/sillsdev/silnlp/wiki/Installing-External-Libraries). |
0 commit comments