args = parser.parse_args() logging.info(args) num_epoch = args.num_epoch batch_size = args.batch_size optimizer = 'sgd' factor_size = args.factor_size print_every = args.print_every num_gpus = args.num_gpus momentum = 0.9 learning_rate = 0.1 # prepare dataset and iterators max_user = MOVIELENS['max_user'] max_movies = MOVIELENS['max_movie'] get_movielens_data(MOVIELENS['dataset']) train_iter = get_movielens_iter(MOVIELENS['train'], batch_size) val_iter = get_movielens_iter(MOVIELENS['val'], batch_size) # construct the model net = matrix_fact_model_parallel_net(factor_size, factor_size, max_user, max_movies) # construct the module # map the ctx_group attribute to the context assignment group2ctxs = { 'dev1': [mx.cpu()] * num_gpus, 'dev2': [mx.gpu(i) for i in range(num_gpus)] } mod = mx.module.Module(symbol=net, context=[mx.cpu()] * num_gpus,
args = parser.parse_args() logging.info(args) num_epoch = args.num_epoch batch_size = args.batch_size optimizer = 'sgd' factor_size = args.factor_size print_every = args.print_every num_gpus = args.num_gpus momentum = 0.9 learning_rate = 0.1 # prepare dataset and iterators max_user = MOVIELENS['max_user'] max_movies = MOVIELENS['max_movie'] get_movielens_data(MOVIELENS['dataset']) train_iter = get_movielens_iter(MOVIELENS['train'], batch_size) val_iter = get_movielens_iter(MOVIELENS['val'], batch_size) # construct the model net = matrix_fact_model_parallel_net(factor_size, factor_size, max_user, max_movies) # construct the module # map the ctx_group attribute to the context assignment group2ctxs={'dev1':[mx.cpu()]*num_gpus, 'dev2':[mx.gpu(i) for i in range(num_gpus)]} # Creating a module by passing group2ctxs attribute which maps # the ctx_group attribute to the context assignment mod = mx.module.Module(symbol=net, context=[mx.cpu()]*num_gpus, data_names=['user', 'item'], label_names=['score'], group2ctxs=group2ctxs)