|
|
--- |
|
|
license: mit |
|
|
tags: |
|
|
- pytorch |
|
|
- transformers |
|
|
- text-generation |
|
|
- hello-world |
|
|
- educational |
|
|
language: |
|
|
- en |
|
|
--- |
|
|
|
|
|
# Hello World Model |
|
|
|
|
|
A minimal "Hello World" transformer model for demonstration purposes on Hugging Face. |
|
|
|
|
|
## Model Description |
|
|
|
|
|
This is a simple transformer-based language model that serves as a basic example for uploading models to Hugging Face. It demonstrates the minimum required files and structure for a custom model. |
|
|
|
|
|
### Associated Dataset |
|
|
|
|
|
This model works with the [chiedo/hello-world dataset](https://huggingface.co/datasets/chiedo/hello-world), which contains 20 examples of "Hello World" variations for demonstration purposes. |
|
|
|
|
|
### Architecture Details |
|
|
- **Model Type**: Custom Transformer (hello_world) |
|
|
- **Vocabulary Size**: 13 tokens |
|
|
- **Hidden Size**: 64 dimensions |
|
|
- **Number of Layers**: 1 transformer encoder layer |
|
|
- **Attention Heads**: 1 |
|
|
- **Intermediate Size**: 128 |
|
|
- **Max Position Embeddings**: 512 |
|
|
- **Activation Function**: GELU |
|
|
|
|
|
## Files Included |
|
|
|
|
|
- `config.json` - Model configuration |
|
|
- `pytorch_model.bin` - Model weights (PyTorch format) |
|
|
- `tokenizer.json` - Tokenizer vocabulary and settings |
|
|
- `tokenizer_config.json` - Tokenizer configuration |
|
|
- `model.py` - Model implementation (HelloWorldModel class with dataset loading methods) |
|
|
- `test_model.py` - Test script for local validation |
|
|
- `example_with_dataset.py` - Example script showing dataset integration |
|
|
|
|
|
## Installation |
|
|
|
|
|
### Using Virtual Environment (Recommended) |
|
|
|
|
|
It's recommended to use a virtual environment to manage dependencies: |
|
|
|
|
|
```bash |
|
|
# Create a virtual environment |
|
|
python -m venv venv |
|
|
|
|
|
# Activate the virtual environment |
|
|
# On macOS/Linux: |
|
|
source venv/bin/activate |
|
|
# On Windows: |
|
|
# venv\Scripts\activate |
|
|
|
|
|
# Install required packages |
|
|
pip install torch transformers |
|
|
``` |
|
|
|
|
|
### Direct Installation |
|
|
|
|
|
If you prefer to install directly: |
|
|
|
|
|
```bash |
|
|
pip install torch transformers |
|
|
``` |
|
|
|
|
|
## How to Use This Model - Complete Beginner's Guide |
|
|
|
|
|
### Understanding How Hugging Face Models Work |
|
|
|
|
|
When you use a model from Hugging Face, you have two options: |
|
|
1. **Download automatically** - The model downloads itself when you run the code (easiest!) |
|
|
2. **Download manually** - You download the files yourself and use them locally |
|
|
|
|
|
### Method 1: Automatic Download (Easiest - No Manual Download Needed!) |
|
|
|
|
|
The model will automatically download from Hugging Face when you run this code: |
|
|
|
|
|
**Step 1:** Install the required libraries (one-time setup): |
|
|
```bash |
|
|
pip install torch transformers |
|
|
``` |
|
|
|
|
|
**Step 2:** Create a new Python file on your computer (e.g., `test_model.py`): |
|
|
```python |
|
|
from transformers import AutoModel, AutoTokenizer |
|
|
|
|
|
# This will AUTOMATICALLY download the model from Hugging Face! |
|
|
# No need to manually download anything! |
|
|
model_name = "chiedo/hello-world" # Replace with your actual model name |
|
|
|
|
|
print("Downloading model... (this happens only once)") |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) |
|
|
model = AutoModel.from_pretrained(model_name, trust_remote_code=True) |
|
|
|
|
|
# Test the model |
|
|
output = model.generate_hello_world() |
|
|
print(output) # "Hello World!" |
|
|
``` |
|
|
|
|
|
**Step 3:** Run the script: |
|
|
```bash |
|
|
python test_model.py |
|
|
``` |
|
|
|
|
|
**What happens behind the scenes:** |
|
|
- The model files automatically download to `~/.cache/huggingface/hub/` (hidden folder) |
|
|
- You don't need to know where they are - it just works! |
|
|
- Next time you run it, it uses the cached version (no re-download) |
|
|
|
|
|
### Method 2: Manual Download (If You Want the Files on Your Computer) |
|
|
|
|
|
Want to see and control the actual model files? Here's how: |
|
|
|
|
|
**Step 1:** Download the model files from Hugging Face: |
|
|
|
|
|
**Option A: Using Git (Recommended)** |
|
|
```bash |
|
|
# Install git-lfs first (one time only) |
|
|
git lfs install |
|
|
|
|
|
# Clone the model repository |
|
|
git clone https://huggingface.co/chiedo/hello-world |
|
|
cd hello-world |
|
|
``` |
|
|
|
|
|
**Option B: Download ZIP from website** |
|
|
1. Go to https://huggingface.co/chiedo/hello-world |
|
|
2. Click "Files and versions" tab |
|
|
3. Click the download button to get all files as ZIP |
|
|
4. Extract the ZIP to a folder on your computer |
|
|
|
|
|
**Step 2:** Install required libraries: |
|
|
```bash |
|
|
pip install torch transformers |
|
|
``` |
|
|
|
|
|
**Step 3:** Use the local model files: |
|
|
```python |
|
|
import sys |
|
|
sys.path.append('/path/to/hello-world') # Add the model folder to Python path |
|
|
|
|
|
from model import HelloWorldModel, HelloWorldConfig |
|
|
from transformers import PreTrainedTokenizerFast |
|
|
|
|
|
# Load from local files |
|
|
model_path = "/path/to/hello-world" # Change this to your actual path! |
|
|
|
|
|
config = HelloWorldConfig.from_pretrained(model_path) |
|
|
model = HelloWorldModel.from_pretrained(model_path) |
|
|
tokenizer = PreTrainedTokenizerFast.from_pretrained(model_path) |
|
|
|
|
|
# Test it |
|
|
output = model.generate_hello_world() |
|
|
print(output) # "Hello World!" |
|
|
``` |
|
|
|
|
|
**Where to save the model folder:** |
|
|
- Anywhere on your computer is fine! |
|
|
- Common locations: |
|
|
- Windows: `C:\Users\YourName\Documents\models\hello-world` |
|
|
- Mac: `/Users/YourName/Documents/models/hello-world` |
|
|
- Linux: `/home/YourName/models/hello-world` |
|
|
|
|
|
### Method 3: Using in Google Colab (Zero Setup Required!) |
|
|
|
|
|
Perfect for beginners - no installation needed! |
|
|
|
|
|
1. Go to https://colab.research.google.com |
|
|
2. Click "New notebook" |
|
|
3. Copy and paste this code: |
|
|
|
|
|
```python |
|
|
# Install dependencies (Colab needs this every time) |
|
|
!pip install torch transformers |
|
|
|
|
|
# Load and use the model (auto-downloads from Hugging Face!) |
|
|
from transformers import AutoModel, AutoTokenizer |
|
|
|
|
|
model_name = "chiedo/hello-world" |
|
|
print("Downloading model from Hugging Face...") |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) |
|
|
model = AutoModel.from_pretrained(model_name, trust_remote_code=True) |
|
|
|
|
|
# Test it |
|
|
print("Testing model:") |
|
|
print(model.generate_hello_world()) |
|
|
``` |
|
|
|
|
|
4. Click the "Play" button or press Shift+Enter to run |
|
|
|
|
|
### FAQ - Frequently Asked Questions |
|
|
|
|
|
**Q: Do I need to download the model files manually?** |
|
|
A: No! The transformers library automatically downloads them when you use `from_pretrained()` |
|
|
|
|
|
**Q: Where does the model download to?** |
|
|
A: It downloads to a hidden cache folder (`~/.cache/huggingface/hub/`). You don't need to manage this. |
|
|
|
|
|
**Q: How big is the download?** |
|
|
A: This demo model is tiny (< 1 MB). Real models can be much larger (several GB). |
|
|
|
|
|
**Q: Can I use this without internet?** |
|
|
A: After the first download, yes! The model is cached locally. |
|
|
|
|
|
**Q: What's the difference between this and pip install?** |
|
|
A: `pip install` installs Python libraries. Hugging Face models aren't libraries - they're data files (weights, config, etc.) that get downloaded separately. |
|
|
|
|
|
### What Does This Model Actually Do? |
|
|
|
|
|
This is a demonstration model that: |
|
|
- **Always outputs:** "Hello World!" when you call `generate_hello_world()` |
|
|
- **Purpose:** Shows the minimum files needed to upload a model to Hugging Face |
|
|
- **Not for real use:** It's like a "Hello World" program - just for learning! |
|
|
|
|
|
### Common Issues and Solutions |
|
|
|
|
|
**Issue: "ModuleNotFoundError: No module named 'transformers'"** |
|
|
- Solution: Run `pip install transformers torch` |
|
|
|
|
|
**Issue: "Can't load the model"** |
|
|
- Solution: Make sure to include `trust_remote_code=True` parameter |
|
|
|
|
|
**Issue: "Model not found"** |
|
|
- Solution: Check the model name matches exactly (case-sensitive) |
|
|
|
|
|
### More Examples |
|
|
|
|
|
#### Example 1: Tokenizing Text |
|
|
```python |
|
|
# See how the model breaks down text into tokens |
|
|
text = "Hello World" |
|
|
tokens = tokenizer.encode(text) |
|
|
print(f"Text '{text}' becomes tokens: {tokens}") |
|
|
|
|
|
# Convert tokens back to text |
|
|
decoded = tokenizer.decode(tokens) |
|
|
print(f"Tokens {tokens} become text: '{decoded}'") |
|
|
``` |
|
|
|
|
|
#### Example 2: Getting Model Predictions |
|
|
```python |
|
|
# Get raw predictions from the model |
|
|
input_text = "Hello" |
|
|
inputs = tokenizer(input_text, return_tensors="pt") |
|
|
|
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
logits = outputs.logits |
|
|
print(f"Model output shape: {logits.shape}") |
|
|
``` |
|
|
|
|
|
### Using the Model with Its Dataset |
|
|
|
|
|
This model includes built-in methods to work with the [chiedo/hello-world dataset](https://huggingface.co/datasets/chiedo/hello-world): |
|
|
|
|
|
#### Loading the Dataset Through the Model |
|
|
```python |
|
|
from transformers import AutoModel, AutoTokenizer |
|
|
from datasets import load_dataset |
|
|
|
|
|
# Load model and tokenizer |
|
|
model = AutoModel.from_pretrained("chiedo/hello-world", trust_remote_code=True) |
|
|
tokenizer = AutoTokenizer.from_pretrained("chiedo/hello-world", trust_remote_code=True) |
|
|
|
|
|
# Method 1: Use the model's built-in dataset loading |
|
|
dataset = model.load_dataset("chiedo/hello-world") |
|
|
print(f"Dataset splits: {list(dataset.keys())}") |
|
|
|
|
|
# Method 2: Load dataset directly |
|
|
dataset = load_dataset("chiedo/hello-world") |
|
|
|
|
|
# Process a batch from the dataset |
|
|
texts = dataset["train"]["text"][:5] |
|
|
inputs = model.prepare_dataset_batch(texts, tokenizer) |
|
|
outputs = model(**inputs) |
|
|
``` |
|
|
|
|
|
#### Complete Example with Dataset |
|
|
```python |
|
|
# Run the full example script |
|
|
python example_with_dataset.py |
|
|
``` |
|
|
|
|
|
This will demonstrate: |
|
|
- Loading the model and dataset |
|
|
- Processing batches from the dataset |
|
|
- Running inference on dataset examples |
|
|
- Accessing dataset labels and features |
|
|
|
|
|
## Model Vocabulary |
|
|
|
|
|
The model includes a minimal vocabulary: |
|
|
- Special tokens: `[PAD]`, `[UNK]`, `[CLS]`, `[SEP]`, `[MASK]` |
|
|
- Content tokens: `Hello`, `World`, `!`, `hello`, `world`, `.`, `,`, `?` |
|
|
|
|
|
## Training |
|
|
|
|
|
This is a demonstration model and has not been trained on any dataset. The weights are randomly initialized using a normal distribution with standard deviation of 0.02. |
|
|
|
|
|
## Testing |
|
|
|
|
|
Run the included test script to verify the model works correctly: |
|
|
|
|
|
```bash |
|
|
# Make sure your virtual environment is activated if using one |
|
|
# source venv/bin/activate # On macOS/Linux |
|
|
# venv\Scripts\activate # On Windows |
|
|
|
|
|
python test_model.py |
|
|
``` |
|
|
|
|
|
## Uploading to Hugging Face |
|
|
|
|
|
To upload this model to your Hugging Face account: |
|
|
|
|
|
```bash |
|
|
# Install huggingface-hub |
|
|
pip install huggingface-hub |
|
|
|
|
|
# Login to Hugging Face |
|
|
huggingface-cli login |
|
|
|
|
|
# Create a new model repository (if it doesn't exist) |
|
|
huggingface-cli repo create hello-world-model --type model |
|
|
|
|
|
# Upload all model files |
|
|
huggingface-cli upload your-username/hello-world-model . --repo-type model |
|
|
``` |
|
|
|
|
|
## Technical Details |
|
|
|
|
|
- **Framework**: PyTorch |
|
|
- **Transformers Version**: 4.36.0+ |
|
|
- **Python Version**: 3.6+ |
|
|
- **License**: MIT |
|
|
|
|
|
## Limitations |
|
|
|
|
|
- This model is for demonstration and educational purposes only |
|
|
- Not trained on any real data |
|
|
- Should not be used for production applications |
|
|
- Limited vocabulary of 13 tokens |
|
|
- Single layer architecture is too simple for real NLP tasks |
|
|
|
|
|
## Citation |
|
|
|
|
|
If you use this model as a template: |
|
|
|
|
|
```bibtex |
|
|
@misc{hello-world-model, |
|
|
title={Hello World Model - A Minimal Hugging Face Model Example}, |
|
|
author={Your Name}, |
|
|
year={2024}, |
|
|
publisher={Hugging Face} |
|
|
} |
|
|
``` |
|
|
|
|
|
## License |
|
|
|
|
|
MIT License - This model is open source and available for any use. |
|
|
|
|
|
## Contact |
|
|
|
|
|
For questions or issues with this demonstration model, please open an issue on the repository. |