Optimizing a large number of INSERT ... SELECT statements
SUGGESTIONS

Increase the size of your Log Buffer. The default value for innodb_log_buffer_size is 8M. You should make 256M or 512M. (Restart Required)
Turn off the Double Write Buffer. Set innodb_doublewrite to 0. (Restart Required)
OPTIONAL : Temporarily disable change buffering, which throttles secondary index updates.
OPTIONAL : In your application, you should limit the number of rows to insert. Try insert 500 or 1000 rows at a time. If the rows have long VARCHAR columns, then insert 100 or 200 rows at a time.

SUMMARY
Add these lines to my.cnf
[mysqld]
innodb_log_buffer_size = 256M
innodb_doublewrite = 0

then, restart mysql.
If these do not improve things, then try disabling the change buffering with
SET GLOBAL innodb_change_buffering = 'none';

You could always change it back to 'all' after a number of large bulk inserts.
GIVE IT A TRY !!!