The problem can be is that 10 posts relates to one article and article id is coming 10 times with each post so i guess you need to count distinct article ids
SELECT
`forums`.*,
COUNT(DISTINCT `topics`.`topic_id`) AS `num_of_topics`,
COUNT(DISTINCT `posts`.`post_id`) AS `num_of_posts`
FROM `forums`
LEFT JOIN `topics` ON `topics`.`forum_id` = `forums`.`forum_id`
LEFT JOIN `posts` ON `posts`.`topic_id` = `topics`.`topic_id`
GROUP BY `forums`.`forum_id`