LoraHub: Efficient Cross-Task Generalization via Dynamic LoRA Composition