LARCH: Large Language Model-based Automatic Readme Creation with Heuristics
LARCH is an automatic readme generation system using language models.
Usage
Prerequisite
Install LARCH with pip:
pip install larch-readme
Python CLI
You can then test out generation without setting up a server.
larch --local --model openai/text-davinci-003 --openai-api-key ${YOUR_OPENAI_API_KEY}
or you can rely on a server to do generation (See following for setting up a server):
larch --endpoint https://${YOUR_SERVER_ADDRESS} --model openai/text-davinci-003
Server
Start the server.
OPENAI_API_KEY=${MY_API_KEY} larch-server
You can access http://localhost:8000/docs to see the API.
You may want to specify --host ${YOUR_HOST_NAME_OR_IP_ADDRESS} if you intend to access from a remote machine.
Both environmental variables are optional. Spcify OPENAI_API_KEY if you want to allow users to use OpenAI-based models. Specify ENTRYPOINT_EXTRACTOR if you want to use entrypoint-based generation (strongly recommended; trained with script/entrypoint_extractor.py).
You can limit the models to load with LOADED_MODELS environmental variable (not setting anything loads all models).
You can also load pretrained encoder-decoder model by passing json serialization mapping from their names to their paths with ENCODER_DECODER_MODEL_PATHS.
# This loads gpt2, gpt2-xl and a pretrained encoder-decoder model from ./path-to-model/
LOADED_MODELS='gpt2,gpt2-xl' ENCODER_DECODER_MODEL_PATHS='{"my-encdec": "./path-to-model/"}' larch-server
# This only loads a pretrained encoder-decoder model. Notice that empty LOADED_MODELS and unset LOADED_MODELS have different behaviors.
LOADED_MODELS='' ENCODER_DECODER_MODEL_PATHS='{"my-encdec": "./path-to-model/"}' larch-server
You can download VSCode plugin to interact with the server from: Coming soon!
Usage with Docker
Build docker image (you need to set up proxy settings appriopriately if you are behind a proxy server).
docker build -t larch .
You may need to pass --build-arg CURL_CA_BUNDLE="" if you are behind a proxy and getting a SSL error.
WARNING: This disables SSL connection thus make your connection vulnerable against attacks.
Then you can start the server with the following command:
docker run \
--rm \
-p ${YOUR_HOST_IP}:${PORT}:80/tcp \
\
larch
You need to pass -e OPENAI_API_KEY=${YOUR_OPENAI_API_KEY} if you wish to use OpenAI models.
You may need to pass -e CURL_CA_BUNDLE="" if you are behind a proxy and getting a SSL error.
WARNING: This disables SSL connection thus make your connection vulnerable against attacks.
Development
Alternatively, you can run CLI without using pip for better debugging and development.
pip install -r requirements.txt
export PYTHONPATH=`pwd`
# test out generation
python larch/cli.py --local --model gpt2
# start debug server
python larch/server.py --reload --log-level debug
For testing:
pip install 'pytest>=7.2.0' 'pytest-dependency>=0.5.1'
export PYTHONPATH=`pwd`
py.test -v tests
Model Training and Evaluation
Training Encoder-Decoder Models
You can train your own Encoder-Decoder Model with scripts/finetune_encdec.py.
# Make sure you have CUDA 11.6 installed
# We do custom torch installation to enble GPU
pip install torch==1.13.0+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r <(cat requirements.txt | grep -v torch)
pip install -r requirements-dev.txt
export PYTHONPATH=`pwd`
python scripts/finetune_encdec.py \
--model_name_or_path t5-small \
--do_train \
--do_eval \
--train_file ./path-to-train.jsonl \
--validation_file ./path-to-dev.jsonl \
--output_dir ./tmp-summarization \
--per_device_train_batch_size=4 \
--per_device_eval_batch_size=4 \
--overwrite_output_dir
Supported models are BART, mBART, T5, mT5 and LED. Only T5 models t5-small, t5-base, t5-large, t5-3b and t5-11b must use an additional argument: --source_prefix "summarize: ".
Metadata
Release files for larch-readme 0.0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| larch_readme-0.0.10-py3-none-any.whl | Python 3 | none | any | Details |
Release files / larch_readme-0.0.10-py3-none-any.whl
| Download URL | larch_readme-0.0.10-py3-none-any.whl |
|---|---|
| Size | 48.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d0e14a42af260f1177b34072dd52257beb007451f780ffcf5e8028f90ae5fa4
|
|
BLAKE2b-256 checksum How to use checksums |
f746d52404a9f60d3d2ada322a7714369028b47a7afbc8b321e579d69c05ab7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|