Low-Rank Adaptation of Large Language Models