Turn ★ into ⭐ (top-right corner) if you like the project!
Query and summarize your documents or just chat with local private GPT LLMs using h2oGPT, an Apache V2 open-source project.
- Private offline database of any documents (PDFs, Excel, Word, Images, Code, Text, MarkDown, etc.)
- Persistent database (Chroma, Weaviate, or in-memory FAISS) using accurate embeddings (instructor-large, all-MiniLM-L6-v2, etc.)
- Efficient use of context using instruct-tuned LLMs (no need for LangChain's few-shot approach)
- Parallel summarization reaching 80 tokens/second output 13B LLaMa2
- Variety of models supported (LLaMa2, Falcon, Vicuna, WizardLM including AutoGPTQ, 4-bit/8-bit, LORA)
- GPU support from HF and LLaMa.cpp GGML models, and CPU support using HF, LLaMa.cpp, and GPT4ALL models
- UI or CLI with streaming of all models
- Upload and View documents via UI (control multiple collaborative or personal collections)
- Bake-off UI mode against many models at same time
- Easy Download of model artifacts and control over models like LLaMa.cpp via UI
- Authentication in UI by user/password
- State Preservation in UI by user/password
- Linux, Docker, MAC, and Windows support
- Easy Windows Installer for Windows 10 64-bit
- Inference Servers support (HF TGI server, vLLM, Gradio, ExLLaMa, Replicate, OpenAI, Azure OpenAI)
- OpenAI-compliant Python client API for client-server control
- Evaluate performance using reward models
- Quality maintained with over 300 unit and integration tests taking over 4 GPU-hours
To quickly try out h2oGPT on CPU with limited document Q/A capability using LLaMa2 7B Chat, create a fresh Python 3.10 environment and run:
git clone https://github.com/h2oai/h2ogpt.git
cd h2ogpt
pip install -r requirements.txt
pip install -r reqs_optional/requirements_optional_langchain.txt
pip install -r reqs_optional/requirements_optional_gpt4all.txt
# if don't have wget, copy the below link to browser and download and place file into h2ogpt folder
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q8_0.bin
python generate.py --base_model='llama' --prompt_type=llama2
then go to your browser by visiting http://127.0.0.1:7860 or http://localhost:7860.
-
One-click Installers
- h2oGPT GPU-CUDA Installer (1.8GB file)
- h2oGPT CPU Installer (755MB file)
The installers include all dependencies for document Q/A, except models (LLM, embedding, reward) that are downloadable via UI. After installation, go to start and run h2oGPT, and a web browser will open for h2oGPT. To use LLaMa model, go to Models tab, select
llama
base model, then click load to download from preset URL. Then use as normal. To terminate the app, in task manager kill thePython
process namedpythonw.exe
as will also show up innvidia-smi
if using GPUs. Set environment variables (in system properties->advanced->environment variables) to control things:n_jobs
: number of cores for various tasksOMP_NUM_THREADS
thread count for LLaMaCUDA_VISIBLE_DEVICES
which GPUs are visible- Any CLI argument from
python generate.py --help
with environment variable set ash2ogpt_x
, e.g.h2ogpt_h2ocolors
toFalse
. - Set env
h2ogpt_server_name
to actual IP address for LAN to see app, e.g.h2ogpt_server_name
to192.168.1.172
and allow access through firewall if have Windows Defender activated.
- Highest accuracy and speed on 16-bit with TGI/vLLM using ~48GB/GPU when in use (4xA100 high concurrency, 2xA100 for low concurrency)
- Middle-range accuracy on 16-bit with TGI/vLLM using ~45GB/GPU when in use (2xA100)
- Small memory profile with ok accuracy 16GB GPU if full GPU offloading
- Balanced accuracy and size on 16-bit with TGI/vLLM using ~45GB/GPU when in use (1xA100)
- Smallest or CPU friendly 32GB system ram or 9GB GPU if full GPU offloading
GPU mode requires CUDA support via torch and transformers. A 7B/13B model in 16-bit uses 14GB/26GB of GPU memory to store the weights (2 bytes per weight). Compression such as 4-bit precision (bitsandbytes, AWQ, GPTQ, etc.) can further reduce memory requirements down to less than 6GB when asking a question about your documents (see low-memory mode).
CPU mode uses GPT4ALL and LLaMa.cpp, e.g. gpt4all-j, requiring about 14GB of system RAM in typical use.
- Live h2oGPT Document Q/A Demo
- 🤗 Live h2oGPT Chat Demo 1
- 🤗 Live h2oGPT Chat Demo 2
- h2oGPT CPU
- h2oGPT GPU
- Discord
- Apache V2 models (Falcon 40, etc.) at 🤗
- YouTube: 100% Offline ChatGPT Alternative?
- YouTube: Ultimate Open-Source LLM Showdown (6 Models Tested) - Surprising Results!
- YouTube: Blazing Fast Falcon 40b 🚀 Uncensored, Open-Source, Fully Hosted, Chat With Your Docs
- Technical Paper: https://arxiv.org/pdf/2306.08161.pdf
- Live Leaderboard for GPT-4 Elo Evaluation of Instruct/Chat models with h2o-LLM-eval.
- Advanced fine-tuning with H2O LLM Studio
demo2.mp4
YouTube 4K version: https://www.youtube.com/watch?v=_iktbj4obAI
- Getting Started
- Linux (CPU or CUDA)
- MACOS (CPU or M1/M2)
- Windows 10/11 (CPU or CUDA)
- GPU (CUDA, AutoGPTQ, exllama) Running Details
- CPU Running Details
- CLI chat
- Gradio UI
- Client API (Gradio, OpenAI-Compliant)
- Inference Servers (HF TGI server, vLLM, Gradio, ExLLaMa, Replicate, OpenAI, Azure OpenAI)
- Python Wheel
- Offline Installation
- Low Memory
- Docker
- LangChain Document Support
- Compare to PrivateGPT et al.
- Roadmap
- Development
- Help
- Acknowledgements
- Why H2O.ai?
- Disclaimer
- Integration of code and resulting LLMs with downstream applications and low/no-code platforms
- Complement h2oGPT chatbot with search and other APIs
- High-performance distributed training of larger models on trillion tokens
- Enhance the model's code completion, reasoning, and mathematical capabilities, ensure factual correctness, minimize hallucinations, and avoid repetitive output
- Add other tools like search
- Add agents for SQL and CSV question/answer
- To create a development environment for training and generation, follow the installation instructions.
- To fine-tune any LLM models on your data, follow the fine-tuning instructions.
- To run h2oGPT tests:
or tweak/run
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q8_0.bin pip install requirements-parser pytest-instafail pytest --instafail -s -v tests # for client tests make -C client setup make -C client build pytest --instafail -s -v client/tests
tests/test4gpus.sh
to run tests in parallel.
-
Flash attention support, see Flash Attention
-
More Links, context, competitors, models, datasets
- Some training code was based upon March 24 version of Alpaca-LoRA.
- Used high-quality created data by OpenAssistant.
- Used base models by EleutherAI.
- Used OIG data created by LAION.
Our Makers at H2O.ai have built several world-class Machine Learning, Deep Learning and AI platforms:
- #1 open-source machine learning platform for the enterprise H2O-3
- The world's best AutoML (Automatic Machine Learning) with H2O Driverless AI
- No-Code Deep Learning with H2O Hydrogen Torch
- Document Processing with Deep Learning in Document AI
We also built platforms for deployment and monitoring, and for data wrangling and governance:
- H2O MLOps to deploy and monitor models at scale
- H2O Feature Store in collaboration with AT&T
- Open-source Low-Code AI App Development Frameworks Wave and Nitro
- Open-source Python datatable (the engine for H2O Driverless AI feature engineering)
Many of our customers are creating models and deploying them enterprise-wide and at scale in the H2O AI Cloud:
- Multi-Cloud or on Premises
- Managed Cloud (SaaS)
- Hybrid Cloud
- AI Appstore
We are proud to have over 25 (of the world's 280) Kaggle Grandmasters call H2O home, including three Kaggle Grandmasters who have made it to world #1.
Please read this disclaimer carefully before using the large language model provided in this repository. Your use of the model signifies your agreement to the following terms and conditions.
- Biases and Offensiveness: The large language model is trained on a diverse range of internet text data, which may contain biased, racist, offensive, or otherwise inappropriate content. By using this model, you acknowledge and accept that the generated content may sometimes exhibit biases or produce content that is offensive or inappropriate. The developers of this repository do not endorse, support, or promote any such content or viewpoints.
- Limitations: The large language model is an AI-based tool and not a human. It may produce incorrect, nonsensical, or irrelevant responses. It is the user's responsibility to critically evaluate the generated content and use it at their discretion.
- Use at Your Own Risk: Users of this large language model must assume full responsibility for any consequences that may arise from their use of the tool. The developers and contributors of this repository shall not be held liable for any damages, losses, or harm resulting from the use or misuse of the provided model.
- Ethical Considerations: Users are encouraged to use the large language model responsibly and ethically. By using this model, you agree not to use it for purposes that promote hate speech, discrimination, harassment, or any form of illegal or harmful activities.
- Reporting Issues: If you encounter any biased, offensive, or otherwise inappropriate content generated by the large language model, please report it to the repository maintainers through the provided channels. Your feedback will help improve the model and mitigate potential issues.
- Changes to this Disclaimer: The developers of this repository reserve the right to modify or update this disclaimer at any time without prior notice. It is the user's responsibility to periodically review the disclaimer to stay informed about any changes.
By using the large language model provided in this repository, you agree to accept and comply with the terms and conditions outlined in this disclaimer. If you do not agree with any part of this disclaimer, you should refrain from using the model and any content generated by it.