Add troubleshooting section to readme file
This commit is contained in:
@@ -309,3 +309,145 @@ spaces_before_comment = 2
|
||||
```
|
||||
|
||||
Please run `yapf --in-place --recursive <filename>` on all affected files.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Installation Issues
|
||||
|
||||
#### ARM/Apple Silicon Compatibility
|
||||
**Problem:** `lingvo` dependency fails on Apple Silicon (M1/M2/M3) machines.
|
||||
```
|
||||
ERROR: Could not build wheels for lingvo
|
||||
```
|
||||
**Solution:** This is a known issue. The `lingvo` dependency doesn't support ARM architectures. We recommend:
|
||||
- Use x86_64 emulation via Rosetta 2: `arch -x86_64 pip install timesfm[pax]`
|
||||
- Use the PyTorch version instead, which has better ARM support: `pip install timesfm[torch]`
|
||||
- Use Docker with x86_64 emulation for consistent environments
|
||||
|
||||
#### Memory Issues During Installation
|
||||
**Problem:** Installation fails with memory errors.
|
||||
```
|
||||
Killed (signal 9)
|
||||
```
|
||||
**Solution:**
|
||||
- Ensure at least 32GB RAM is available
|
||||
- Close other applications during installation
|
||||
- Use `pip install --no-cache-dir timesfm[torch]` to reduce memory usage
|
||||
- Install in a clean virtual environment
|
||||
|
||||
#### JAX/PyTorch Version Conflicts
|
||||
**Problem:** Conflicting JAX and PyTorch installations.
|
||||
```
|
||||
ImportError: cannot import name 'jax' from 'jax'
|
||||
```
|
||||
**Solution:**
|
||||
- For PyTorch-only usage: `pip install timesfm[torch]`
|
||||
- For covariates with PyTorch: `pip install timesfm[torch] && pip install jax jaxlib`
|
||||
- For PAX version: `pip install timesfm[pax]`
|
||||
|
||||
### Runtime Errors
|
||||
|
||||
#### Model Loading Issues
|
||||
**Problem:** Checkpoint download fails or is corrupted.
|
||||
```
|
||||
HfFileNotFoundError: 404 Client Error
|
||||
```
|
||||
**Solution:**
|
||||
- Check internet connectivity
|
||||
- Verify Hugging Face Hub access: `huggingface-cli login`
|
||||
- Clear cache: `rm -rf ~/.cache/huggingface/`
|
||||
- Use explicit checkpoint paths if needed
|
||||
|
||||
#### CUDA/GPU Issues
|
||||
**Problem:** GPU not detected or CUDA errors.
|
||||
```
|
||||
RuntimeError: CUDA out of memory
|
||||
```
|
||||
**Solutions:**
|
||||
- Reduce `per_core_batch_size` (try 16, 8, or 4)
|
||||
- Reduce `context_len` to minimum needed
|
||||
- Use `backend="cpu"` for testing
|
||||
- Check GPU memory: `nvidia-smi`
|
||||
|
||||
#### Context Length Errors
|
||||
**Problem:** Input series longer than model capacity.
|
||||
```
|
||||
ValueError: context_len must be <= 512 for v1.0 models
|
||||
```
|
||||
**Solutions:**
|
||||
- Use TimesFM-2.0 for longer contexts (up to 2048)
|
||||
- Ensure `context_len` is multiple of 32
|
||||
- Truncate input series if necessary
|
||||
- Set appropriate `context_len` in model initialization
|
||||
|
||||
### Data Issues
|
||||
|
||||
#### Frequency Mapping Problems
|
||||
**Problem:** Unexpected forecasting results with wrong frequency.
|
||||
```
|
||||
Warning: Frequency 'D' mapped to category 0
|
||||
```
|
||||
**Solutions:**
|
||||
- Verify frequency mapping: D→0 (high), W/M→1 (medium), Q/Y→2 (low)
|
||||
- Override automatic mapping by specifying frequency manually
|
||||
- Check data granularity matches chosen frequency category
|
||||
|
||||
#### Missing Values in Time Series
|
||||
**Problem:** NaN or missing values in input data.
|
||||
```
|
||||
ValueError: Input contains NaN values
|
||||
```
|
||||
**Solutions:**
|
||||
- Pre-process data to handle missing values (forward fill, interpolation)
|
||||
- Ensure continuous time series without gaps
|
||||
- Remove or impute missing values before forecasting
|
||||
|
||||
#### Covariate Dimension Mismatches
|
||||
**Problem:** Covariate lengths don't match forecast horizon.
|
||||
```
|
||||
ValueError: Dynamic covariates must cover context + horizon
|
||||
```
|
||||
**Solutions:**
|
||||
- Ensure dynamic covariates have length = context + horizon
|
||||
- Check static vs dynamic covariate classification
|
||||
- Verify covariate data alignment with time series
|
||||
|
||||
### Performance Issues
|
||||
|
||||
#### Slow Inference
|
||||
**Problem:** Forecasting takes unexpectedly long.
|
||||
**Solutions:**
|
||||
- Use GPU backend: `backend="gpu"`
|
||||
- Optimize batch size: increase `per_core_batch_size`
|
||||
- Use appropriate model size for your use case
|
||||
- Profile with smaller data first
|
||||
|
||||
#### Memory Usage
|
||||
**Problem:** High memory consumption during inference.
|
||||
**Solutions:**
|
||||
- Reduce batch size: `per_core_batch_size=1`
|
||||
- Process data in chunks
|
||||
- Use smaller context length when possible
|
||||
- Monitor memory with `htop` or `nvidia-smi`
|
||||
|
||||
### Common Error Messages
|
||||
|
||||
#### `ModuleNotFoundError: No module named 'xreg_lib'`
|
||||
**Cause:** Missing JAX dependencies for covariates functionality.
|
||||
**Solution:** `pip install jax jaxlib`
|
||||
|
||||
#### `ValueError: horizon_len must be positive`
|
||||
**Cause:** Invalid horizon length specified.
|
||||
**Solution:** Set `horizon_len > 0` in model initialization.
|
||||
|
||||
#### `RuntimeError: Expected input batch_size (X) to be divisible by batch_size (Y)`
|
||||
**Cause:** Batch size mismatch.
|
||||
**Solution:** Adjust `per_core_batch_size` or input data batching.
|
||||
|
||||
### Getting Help
|
||||
|
||||
If you encounter issues not covered here:
|
||||
1. Check the [GitHub Issues](https://github.com/google-research/timesfm/issues)
|
||||
2. Review the [notebooks/](notebooks/) for working examples
|
||||
3. Verify your installation follows the exact steps in the Installation section
|
||||
4. Test with the provided example data before using your own datasets
|
||||
|
||||
Reference in New Issue
Block a user