Download scripts/download_sample_dataset.py from Amitkumar001/Law_Slm: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/Amitkumar001/Law_Slm/resolve/main/scripts/download_sample_dataset.py
- Command line
-
hf download hf://Amitkumar001/Law_Slm/scripts/download_sample_dataset.py
-
curl -L -o download_sample_dataset.py https://huggingface.co/Amitkumar001/Law_Slm/resolve/main/scripts/download_sample_dataset.py
2.56 kB
| """ | |
| Dataset Downloader Utility for fetching open-source text corpora for training Small Language Models. | |
| """ | |
| import argparse | |
| import os | |
| import urllib.request | |
| import sys | |
| sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) | |
| from slm.utils.logger import get_logger | |
| logger = get_logger("slm.scripts.download_dataset") | |
| DATASET_URLS = { | |
| "tinystories": { | |
| "url": "https://raw.githubusercontent.com/roneneldan/TinyStories/main/TinyStories-valid.txt", | |
| "filename": "tinystories_valid.txt", | |
| "description": "Clean synthetic story corpus ideal for small language model training." | |
| }, | |
| "wikitext2": { | |
| "url": "https://raw.githubusercontent.com/pytorch/examples/main/word_language_model/data/wikitext-2/train.txt", | |
| "filename": "wikitext2_train.txt", | |
| "description": "High-quality Wikipedia text corpus (WikiText-2)." | |
| }, | |
| "tinyshakespeare": { | |
| "url": "https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt", | |
| "filename": "tinyshakespeare.txt", | |
| "description": "Classic Shakespeare text corpus (1MB)." | |
| } | |
| } | |
| def download_dataset(dataset_key: str, output_dir: str = "data") -> str: | |
| """ | |
| Downloads specified open text dataset into target directory. | |
| """ | |
| if dataset_key not in DATASET_URLS: | |
| raise ValueError(f"Unknown dataset key '{dataset_key}'. Choose from: {list(DATASET_URLS.keys())}") | |
| info = DATASET_URLS[dataset_key] | |
| os.makedirs(output_dir, exist_ok=True) | |
| dest_path = os.path.join(output_dir, info["filename"]) | |
| logger.info(f"Downloading {dataset_key} ({info['description']})...") | |
| logger.info(f"Source URL: {info['url']}") | |
| def _progress(count, block_size, total_size): | |
| percent = int(count * block_size * 100 / max(1, total_size)) | |
| sys.stdout.write(f"\rDownloading... {percent}% complete") | |
| sys.stdout.flush() | |
| urllib.request.urlretrieve(info["url"], dest_path, reporthook=_progress) | |
| print() | |
| logger.info(f"Successfully downloaded dataset to {dest_path}") | |
| return dest_path | |
| def main(): | |
| parser = argparse.ArgumentParser(description="Download open text datasets for Small Language Model training.") | |
| parser.add_argument("--name", type=str, default="wikitext2", choices=list(DATASET_URLS.keys()), help="Dataset choice") | |
| parser.add_argument("--output_dir", type=str, default="data", help="Output folder") | |
| args = parser.parse_args() | |
| download_dataset(args.name, args.output_dir) | |
| if __name__ == "__main__": | |
| main() | |